Rocksolid Light

groups  faq  privacy  How to post  login

Message-ID:  

I dote on his very absence. -- William Shakespeare, "The Merchant of Venice"


rocksolid / de.comp.lang.c / Re: Unglaublich, dass das funktioniert:

SubjectAuthor
* Re: Unglaublich, dass das funktioniert:Bonita Montero
`* Re: Unglaublich, dass das funktioniert:Peter J. Holzer
 `- Re: Unglaublich, dass das funktioniert:Bonita Montero

1
Subject: Re: Unglaublich, dass das funktioniert:
From: Bonita Montero
Newsgroups: de.comp.lang.c
Organization: A noiseless patient Spider
Date: Sun, 17 Dec 2023 14:28 UTC
References: 1
Path: i2pn2.org!i2pn.org!paganini.bofh.team!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!raubtier-asyl.eternal-september.org!.POSTED!not-for-mail
From: Bonita.M...@gmail.com (Bonita Montero)
Newsgroups: de.comp.lang.c
Subject: Re: Unglaublich, dass das funktioniert:
Date: Sun, 17 Dec 2023 15:28:32 +0100
Organization: A noiseless patient Spider
Lines: 18
Message-ID: <uln0ic$2vimd$1@raubtier-asyl.eternal-september.org>
References: <ulmt0o$2urci$1@raubtier-asyl.eternal-september.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 17 Dec 2023 14:28:28 -0000 (UTC)
Injection-Info: raubtier-asyl.eternal-september.org; posting-host="abf40c45a5a9602d062f61eb759c9b7c";
logging-data="3132109"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+UBYm+UIQiXeMzTk1uEqebmXUaekkr51Y="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:N+X1idfUL3yEmvuC0h/rIOhE3Tk=
In-Reply-To: <ulmt0o$2urci$1@raubtier-asyl.eternal-september.org>
Content-Language: de-DE
View all headers

Am 17.12.2023 um 14:27 schrieb Bonita Montero:
> int main( int argc, char ** )
> {
>     switch( argc )
>     {
>         for( ; ; )
>         {
>         case 1:;
>         }
>     }
> }
>
> Hab ich gerade in einem alten C-Programm von 1999 gesehen, dass
> das jemand gemacht hat. Für manche mag das schlecht wirken weil
> es unüblich ist.

Ach, sollte eigentlich hier hin.

Subject: Re: Unglaublich, dass das funktioniert:
From: Peter J. Holzer
Newsgroups: de.comp.lang.c
Organization: LUGA
Date: Sun, 17 Dec 2023 14:46 UTC
References: 1 2
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!weretis.net!feeder8.news.weretis.net!newsfeed.xs3.de!tahina.priv.at!news.luga.at!.POSTED.212.17.106.130!not-for-mail
From: hjp-usen...@hjp.at (Peter J. Holzer)
Newsgroups: de.comp.lang.c
Subject: Re: Unglaublich, dass das funktioniert:
Date: Sun, 17 Dec 2023 15:46:39 +0100
Organization: LUGA
Message-ID: <slrnunu2ef.2uja.hjp-usenet4@trintignant.hjp.at>
References: <ulmt0o$2urci$1@raubtier-asyl.eternal-september.org>
<uln0ic$2vimd$1@raubtier-asyl.eternal-september.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Injection-Info: vinge.luga.at; posting-host="212.17.106.130";
logging-data="4684"; mail-complaints-to="usenet@vinge.luga.at"
User-Agent: slrn/1.0.3 (Linux)
Cancel-Lock: sha1:Cpv2dKpUjaqwrVY0Gfthj/O4mpA=
View all headers

On 2023-12-17 14:28, Bonita Montero <Bonita.Montero@gmail.com> wrote:
> Am 17.12.2023 um 14:27 schrieb Bonita Montero:
>> int main( int argc, char ** )
>> {
>>     switch( argc )
>>     {
>>         for( ; ; )
>>         {
>>         case 1:;
>>         }
>>     }
>> }

Das Fragment hier ist zu kurz, als dass ich hier den Sinn erkennen
könnte, aber ja, das geht, und es gibt - selten aber doch -
Anwendungsfälle dafür.

>> Hab ich gerade in einem alten C-Programm von 1999 gesehen, dass
>> das jemand gemacht hat. Für manche mag das schlecht wirken weil
>> es unüblich ist.
>
> Ach, sollte eigentlich hier hin.
>

Siehe auch "Duff's Device".

Subject: Re: Unglaublich, dass das funktioniert:
From: Bonita Montero
Newsgroups: de.comp.lang.c
Organization: A noiseless patient Spider
Date: Mon, 18 Dec 2023 17:39 UTC
References: 1 2 3
Path: i2pn2.org!rocksolid2!news.neodome.net!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!raubtier-asyl.eternal-september.org!.POSTED!not-for-mail
From: Bonita.M...@gmail.com (Bonita Montero)
Newsgroups: de.comp.lang.c
Subject: Re: Unglaublich, dass das funktioniert:
Date: Mon, 18 Dec 2023 18:39:55 +0100
Organization: A noiseless patient Spider
Lines: 74
Message-ID: <ulq057$3jrg4$1@raubtier-asyl.eternal-september.org>
References: <ulmt0o$2urci$1@raubtier-asyl.eternal-september.org>
<uln0ic$2vimd$1@raubtier-asyl.eternal-september.org>
<slrnunu2ef.2uja.hjp-usenet4@trintignant.hjp.at>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 18 Dec 2023 17:39:51 -0000 (UTC)
Injection-Info: raubtier-asyl.eternal-september.org; posting-host="c4379143b9544b290ff7797460323fb0";
logging-data="3796484"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+dnp1Utv+dH4J7pHW6VTbU8HAz2Xs5IWo="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:+5iEFYvZg4c6dZkvGyVoVbeRcn8=
Content-Language: de-DE
In-Reply-To: <slrnunu2ef.2uja.hjp-usenet4@trintignant.hjp.at>
View all headers

Am 17.12.2023 um 15:46 schrieb Peter J. Holzer:

> Siehe auch "Duff's Device".

Loop-Unrolling geht ohne manuelle Replizierung der einzelnen Statements
in einer Sprache die das erlaubt. Das ist mein unroll.h:

#pragma once
#include <utility>
#include <concepts>
#include <iterator>

#if defined(_MSC_VER)
#define UNROLL_FORCEINLINE __forceinline inline
#elif defined(__GNUC__) || defined(__clang__)
#define UNROLL_FORCEINLINE __attribute__((always_inline)) inline
#else
#define UNROLL_FORCEINLINE inline
#endif

template<size_t N, typename Fn>
requires requires( Fn fn ) { { fn.template operator ()<(size_t)N - 1>()
} -> std::convertible_to<bool>; }
UNROLL_FORCEINLINE bool unroll( Fn fn )
{ auto unroll_n = [&]<size_t ... Indices>( std::index_sequence<Indices
....> ) -> bool
{
return (fn.template operator ()<Indices>() && ...);
};
return unroll_n( std::make_index_sequence<N>() );
}

template<size_t N, typename Fn>
requires requires( Fn fn ) { { fn.template operator ()<(size_t)N - 1>()
} -> std::same_as<void>; }
UNROLL_FORCEINLINE void unroll( Fn fn )
{ unroll<N>( [&]<size_t I>() { fn.template operator ()<I>(); return true;
} );
}

template<std::size_t N, std::random_access_iterator RandomIt, typename Fn>
requires requires( Fn fn, std::iter_common_reference_t<RandomIt> elem )
{ { fn.template operator()<(size_t)-1>( elem ) } -> std::same_as<bool>; }
UNROLL_FORCEINLINE RandomIt unroll_for_each( RandomIt begin, RandomIt
end, Fn fn )
{ if constexpr( N > 1 )
for( ; end - begin >= N && unroll<N>( [&]<size_t I>() { return
fn.template operator ()<I>( begin[I] ); } ); begin += N );
for( ; begin != end && fn.template operator ()<(size_t)-1>( *begin );
++begin );
return begin;
}

template<std::size_t N, std::random_access_iterator RandomIt, typename Fn>
requires requires( Fn fn, std::iter_common_reference_t<RandomIt> elem )
{ { fn.template operator()<(size_t)-1>( elem ) } -> std::same_as<void>; }
UNROLL_FORCEINLINE RandomIt unroll_for_each( RandomIt begin, RandomIt
end, Fn fn )
{ return unroll_for_each<N>( begin, end,
[&]<size_t I>( std::iter_common_reference_t<RandomIt> &value ) {
fn.template operator ()<I>( value ); return true; } );
}

Damit macht man dann sowas wie:

vector<int> vi( ... );
...
int sum = 0;
unroll_for_each<5>( vi.begin(), vi.end(),
[&]<size_t I>( int elem ) { sum += elem; } );


rocksolid / de.comp.lang.c / Re: Unglaublich, dass das funktioniert:

1
server_pubkey.txt

rocksolid light 0.9.136
clearnet tor