p = &a[NI-2];
k = NBITS; while( *p == 0 ) /* significand is not supposed to be all zero */
{
eshdn6(a);
k -= 16;
} if( (*p & 0xff) == 0 )
{
eshdn8(a);
k -= 8;
}
q = &equot[NI-1];
j = 0; for( i=0; i<k; i++ )
{ if( *p & 1 )
eaddm(b, equot); /* remember if there were any nonzero bits shifted out */ if( *q & 1 )
j |= 1;
eshdn1(a);
eshdn1(equot);
}
for( i=0; i<NI; i++ )
b[i] = equot[i];
/* return flag for lost nonzero bits */ return(j);
}
#else
/* Multiply significand of e-type number b
by 16-bit quantity a, e-type result to c. */
void m16m( a, b, c ) unsignedshort a; unsignedshort b[], c[];
{ registerunsignedshort *pp; registerunsignedlong carry; unsignedshort *ps; unsignedshort p[NI]; unsignedlong aa, m; int i;
/* Do not execute the divide instruction if it will overflow. */ if( (tdenm * ((unsignedlong)0xffffL)) < tnum )
tquot = 0xffff; else
tquot = tnum / tdenm;
/* Prove that the divide worked. */ /* tcheck=(unsignedlong)tquot*tdenm; if(tnum-tcheck>tdenm) tquot=0xffff;
*/ /* Multiply denominator by trial quotient digit. */
m16m( tquot, den, tprod ); /* The quotient digit may have been overestimated. */ if( ecmpm( tprod, num ) > 0 )
{
tquot -= 1;
esubm( den, tprod ); if( ecmpm( tprod, num ) > 0 )
{
tquot -= 1;
esubm( den, tprod );
}
} /* if(ecmpm(tprod,num)>0) { eshow("tprod",tprod); eshow("num",num); printf("tnum=%08lx,tden=%04x,tquot=%04x\n", tnum,den[M+1],tquot); }
*/
esubm( tprod, num ); /* if(ecmpm(num,den)>=0) { eshow("num",num); eshow("den",den); printf("tnum=%08lx,tden=%04x,tquot=%04x\n", tnum,den[M+1],tquot); }
*/
equot[i] = tquot;
eshup6(num);
} /* test for nonzero remainder after roundoff bit */
p = &num[M];
j = 0; for( i=M; i<NI; i++ )
{
j |= *p++;
} if( j )
j = 1;
for( i=0; i<NI; i++ )
num[i] = equot[i];
return( (int )j );
}
/* Multiply significands */ int emulm( a, b ) unsignedshort a[], b[];
{ unsignedshort *p, *q; unsignedshort pprod[NI]; unsignedshort j; int i;
/* compare exponents */
lta = ai[E];
ltb = bi[E];
lt = lta - ltb; if( lt > 0L )
{ /* put the larger number in bi */
emovz( bi, ci );
emovz( ai, bi );
emovz( ci, ai );
ltb = bi[E];
lt = -lt;
}
lost = 0; if( lt != 0L )
{ if( lt < (long )(-NBITS-1) ) goto done; /* answer same as larger addend */
k = (int )lt;
lost = eshift( ai, k ); /* shift the smaller number down */
} else
{ /* exponents were the same, so must compare significands */
i = ecmpm( ai, bi ); if( i == 0 )
{ /* the numbers are identical in magnitude */ /* if different signs, result is zero */ if( ai[0] != bi[0] )
{
eclear(c); return;
} /* if same sign, result is double */ /* double denomalized tiny number */ if( (bi[E] == 0) && ((bi[3] & 0x8000) == 0) )
{
eshup1( bi ); goto done;
} /* add 1 to exponent unless both are zero! */ for( j=1; j<NI-1; j++ )
{ if( bi[j] != 0 )
{ /* This could overflow, but let emovo take care of that. */
ltb += 1; break;
}
}
bi[E] = (unsignedshort )ltb; goto done;
} if( i > 0 )
{ /* put the larger number in bi */
emovz( bi, ci );
emovz( ai, bi );
emovz( ci, ai );
}
} if( ai[0] == bi[0] )
{
eaddm( ai, bi );
subflg = 0;
} else
{
esubm( ai, bi );
subflg = 1;
}
emdnorm( bi, lost, subflg, ltb, 64 );
done:
emovo( bi, c );
}
/* ;Divide. ; ;unsignedshorta[NE],b[NE],c[NE]; ;ediv(a,b,c);c=b/a
*/ void ediv( a, b, c ) unsignedshort *a, *b, *c;
{ unsignedshort ai[NI], bi[NI]; int i, sign; long lt, lta, ltb;
/* IEEE says if result is not a NaN, the sign is "-" if and only if
operands have opposite signs -- but flush -0 to 0 later if not IEEE. */
sign = eisneg(a) ^ eisneg(b);
#ifdef NANS /* Return any NaN input. */ if( eisnan(a) )
{
emov(a,c); return;
} if( eisnan(b) )
{
emov(b,c); return;
} /* Zero over zero, or infinity over infinity, is a NaN. */ if( ((ecmp(a,ezero) == 0) && (ecmp(b,ezero) == 0))
|| (eisinf (a) && eisinf (b)) )
{
mtherr( "ediv", DOMAIN );
enan( c, NBITS ); return;
} #endif /* Infinity over anything else is infinity. */ #ifdef INFINITY if( eisinf(b) )
{
einfin(c); goto divsign;
} if( eisinf(a) )
{
eclear(c); goto divsign;
} #endif
emovi( a, ai );
emovi( b, bi );
lta = ai[E];
ltb = bi[E]; if( bi[E] == 0 )
{ /* See if numerator is zero. */ for( i=1; i<NI-1; i++ )
{ if( bi[i] != 0 )
{
ltb -= enormlz( bi ); goto dnzro1;
}
}
eclear(c); goto divsign;
}
dnzro1:
if( ai[E] == 0 )
{ /* possible divide by zero */ for( i=1; i<NI-1; i++ )
{ if( ai[i] != 0 )
{
lta -= enormlz( ai ); goto dnzro2;
}
}
einfin(c);
mtherr( "ediv", SING ); goto divsign;
}
dnzro2:
i = edivm( ai, bi ); /* calculate exponent */
lt = ltb - lta + EXONE;
emdnorm( bi, i, 0, lt, 64 );
emovo( bi, c );
/* ;Multiply. ; ;unsignedshorta[NE],b[NE],c[NE]; ;emul(a,b,c);c=b*a
*/ void emul( a, b, c ) unsignedshort *a, *b, *c;
{ unsignedshort ai[NI], bi[NI]; int i, j, sign; long lt, lta, ltb;
/* IEEE says if result is not a NaN, the sign is "-" if and only if
operands have opposite signs -- but flush -0 to 0 later if not IEEE. */
sign = eisneg(a) ^ eisneg(b);
#ifdef NANS /* NaN times anything is the same NaN. */ if( eisnan(a) )
{
emov(a,c); return;
} if( eisnan(b) )
{
emov(b,c); return;
} /* Zero times infinity is a NaN. */ if( (eisinf(a) && (ecmp(b,ezero) == 0))
|| (eisinf(b) && (ecmp(a,ezero) == 0)) )
{
mtherr( "emul", DOMAIN );
enan( c, NBITS ); return;
} #endif /* Infinity times anything else is infinity. */ #ifdef INFINITY if( eisinf(a) || eisinf(b) )
{
einfin(c); goto mulsign;
} #endif
emovi( a, ai );
emovi( b, bi );
lta = ai[E];
ltb = bi[E]; if( ai[E] == 0 )
{ for( i=1; i<NI-1; i++ )
{ if( ai[i] != 0 )
{
lta -= enormlz( ai ); goto mnzer1;
}
}
eclear(c); goto mulsign;
}
mnzer1:
#ifdef NANS if( eiisnan(x) )
{
enan( y, 24 ); return;
} #endif
p = &x[0]; #ifdef IBMPC
y += 1; #endif #ifdef DEC
y += 1; #endif
*y = 0; /* output high order */ if( *p++ )
*y = 0x8000; /* output sign bit */
i = *p++; if( i >= 255 )
{ /* Saturate at largest number less than infinity. */ #ifdef INFINITY
*y |= (unsignedshort )0x7f80; #ifdef IBMPC
*(--y) = 0; #endif #ifdef DEC
*(--y) = 0; #endif #ifdef MIEEE
++y;
*y = 0; #endif #else
*y |= (unsignedshort )0x7f7f; #ifdef IBMPC
*(--y) = 0xffff; #endif #ifdef DEC
*(--y) = 0xffff; #endif #ifdef MIEEE
++y;
*y = 0xffff; #endif #endif return;
} if( i == 0 )
{
(void )eshift( x, 7 );
} else
{
i <<= 7;
(void )eshift( x, 8 );
}
i |= *p++ & (unsignedshort )0x7f; /* *p = xi[M] */
*y |= i; /* high order output already has sign bit set */ #ifdef IBMPC
*(--y) = *p; #endif #ifdef DEC
*(--y) = *p; #endif #ifdef MIEEE
++y;
*y = *p; #endif
}
/* Compare two e type numbers. * *unsignedshorta[NE],b[NE]; *ecmp(a,b); * *returns+1ifa>b *0ifa==b *-1ifa<b *-2ifeitheraorbisaNaN.
*/ int ecmp( a, b ) unsignedshort *a, *b;
{ unsignedshort ai[NI], bi[NI]; registerunsignedshort *p, *q; registerint i; int msign;
#ifdef NANS if (eisnan (a) || eisnan (b)) return( -2 ); #endif
emovi( a, ai );
p = ai;
emovi( b, bi );
q = bi;
if( *(--p) > *(--q) ) return( msign ); /* p is bigger */ else return( -msign ); /* p is littler */
}
/* Find nearest integer to x = floor( x + 0.5 ) * *unsignedshortx[NE],y[NE] *eround(x,y);
*/ void eround( x, y ) unsignedshort *x, *y;
{
eadd( ehalf, x, y );
efloor( y, y );
}
/* ;convertlong(32-bit)integertoetype ; ;longl; ;unsignedshortx[NE]; ;ltoe(&l,x); ;note&listhememoryaddressofl
*/ void ltoe( lp, y ) long *lp; /* lp is the memory address of a long integer */ unsignedshort *y; /* y is the address of a short */
{ unsignedshort yi[NI]; unsignedlong ll; int k;
ecleaz( yi ); if( *lp < 0 )
{
ll = (unsignedlong )( -(*lp) ); /* make it positive */
yi[0] = 0xffff; /* put correct sign in the e type number */
} else
{
ll = (unsignedlong )( *lp );
} /* move the long integer to yi significand area */ if( sizeof(long) == 8 )
{
yi[M] = (unsignedshort) (ll >> (LONGBITS - 16));
yi[M + 1] = (unsignedshort) (ll >> (LONGBITS - 32));
yi[M + 2] = (unsignedshort) (ll >> 16);
yi[M + 3] = (unsignedshort) ll;
yi[E] = EXONE + 47; /* exponent if normalize shift count were 0 */
} else
{
yi[M] = (unsignedshort )(ll >> 16);
yi[M+1] = (unsignedshort )ll;
yi[E] = EXONE + 15; /* exponent if normalize shift count were 0 */
} if( (k = enormlz( yi )) > NBITS ) /* normalize the significand */
ecleaz( yi ); /* it was zero */ else
yi[E] -= (unsignedshort )k; /* subtract shift count from exponent */
emovo( yi, y ); /* output the answer */
}
/* ;convertunsignedlong(32-bit)integertoetype ; ;unsignedlongl; ;unsignedshortx[NE]; ;ltox(&l,x); ;note&listhememoryaddressofl
*/ void ultoe( lp, y ) unsignedlong *lp; /* lp is the memory address of a long integer */ unsignedshort *y; /* y is the address of a short */
{ unsignedshort yi[NI]; unsignedlong ll; int k;
ecleaz( yi );
ll = *lp;
/* move the long integer to ayi significand area */ if( sizeof(long) == 8 )
{
yi[M] = (unsignedshort) (ll >> (LONGBITS - 16));
yi[M + 1] = (unsignedshort) (ll >> (LONGBITS - 32));
yi[M + 2] = (unsignedshort) (ll >> 16);
yi[M + 3] = (unsignedshort) ll;
yi[E] = EXONE + 47; /* exponent if normalize shift count were 0 */
} else
{
yi[M] = (unsignedshort )(ll >> 16);
yi[M+1] = (unsignedshort )ll;
yi[E] = EXONE + 15; /* exponent if normalize shift count were 0 */
} if( (k = enormlz( yi )) > NBITS ) /* normalize the significand */
ecleaz( yi ); /* it was zero */ else
yi[E] -= (unsignedshort )k; /* subtract shift count from exponent */
emovo( yi, y ); /* output the answer */
}
/* ;Findlongintegerandfractionalparts
;longi; ;unsignedshortx[NE],frac[NE]; ;xifrac(x,&i,frac); Theintegeroutputhasthesignoftheinput.Thefractionis thepositivefractionalpartofabs(x).
*/ void eifrac( x, i, frac ) unsignedshort *x; long *i; unsignedshort *frac;
{ unsignedshort xi[NI]; int j, k; unsignedlong ll;
emovi( x, xi );
k = (int )xi[E] - (EXONE - 1); if( k <= 0 )
{ /* if exponent <= 0, integer = 0 and real output is fraction */
*i = 0L;
emovo( xi, frac ); return;
} if( k > (8 * sizeof(long) - 1) )
{ /* ;longintegeroverflow:outputlargeinteger ;andcorrectfraction
*/
j = 8 * sizeof(long) - 1; if( xi[0] )
*i = (long) ((unsignedlong) 1) << j; else
*i = (long) (((unsignedlong) (~(0L))) >> 1);
(void )eshift( xi, k );
} if( k > 16 )
{ /* Shiftmorethan16bits:shiftupk-16mod16 thenshiftby16's.
*/
j = k - ((k >> 4) << 4);
eshift (xi, j);
ll = xi[M];
k -= j; do
{
eshup6 (xi);
ll = (ll << 16) | xi[M];
} while ((k -= 16) > 0);
*i = ll; if (xi[0])
*i = -(*i);
} else
{ /* shift not more than 16 bits */
eshift( xi, k );
*i = (long )xi[M] & 0xffff; if( xi[0] )
*i = -(*i);
}
xi[0] = 0;
xi[E] = EXONE - 1;
xi[M] = 0; if( (k = enormlz( xi )) > NBITS )
ecleaz( xi ); else
xi[E] -= (unsignedshort )k;
/* Compare to 1.0 */
i = ecmp( eone, y ); if( i == 0 ) goto isone;
if( i < 0 )
{ /* Number is greater than 1 */ /* Convert significand to an integer and strip trailing decimal zeros. */
emov( y, u );
u[NE-1] = EXONE + NBITS - 1;
p = &etens[NTEN-4][0];
m = 16; do
{
ediv( p, u, t );
efloor( t, w ); for( j=0; j<NE-1; j++ )
{ if( t[j] != w[j] ) goto noint;
}
emov( t, u );
expon += (int )m;
noint:
p += NE;
m >>= 1;
} while( m != 0 );
/* Rescale from integer significand */
u[NE-1] += y[NE-1] - (unsignedint )(EXONE + NBITS - 1);
emov( u, y ); /* Find power of 10 */
emov( eone, t );
m = MAXP;
p = &etens[0][0]; while( ecmp( ten, u ) <= 0 )
{ if( ecmp( p, u ) <= 0 )
{
ediv( p, u, u );
emul( p, t, t );
expon += (int )m;
}
m >>= 1; if( m == 0 ) break;
p += NE;
}
} else
{ /* Number is less than 1.0 */ /* Pad significand with trailing decimal zeros. */ if( y[NE-1] == 0 )
{ while( (y[NE-2] & 0x8000) == 0 )
{
emul( ten, y, y );
expon -= 1;
}
} else
{
emovi( y, w ); for( i=0; i<NDEC+1; i++ )
{ if( (w[NI-1] & 0x7) != 0 ) break; /* multiply by 10 */
emovz( w, u );
eshdn1( u );
eshdn1( u );
eaddm( w, u );
u[1] += 3; while( u[2] != 0 )
{
eshdn1(u);
u[1] += 1;
} if( u[NI-1] != 0 ) break; if( eone[NE-1] <= u[1] ) break;
emovz( u, w );
expon -= 1;
}
emovo( w, y );
}
k = -MAXP;
p = &emtens[0][0];
r = &etens[0][0];
emov( y, w );
emov( eone, t ); while( ecmp( eone, w ) > 0 )
{ if( ecmp( p, w ) >= 0 )
{
emul( r, w, w );
emul( r, t, t );
expon += k;
}
k /= 2; if( k == 0 ) break;
p += NE;
r += NE;
}
ediv( t, eone, t );
}
isone: /* Find the first (leading) digit. */
emovi( t, w );
emovz( w, t );
emovi( y, w );
emovz( w, y );
eiremain( t, y );
digit = equot[NI-1]; while( (digit == 0) && (ecmp(y,ezero) != 0) )
{
eshup1( y );
emovz( y, u );
eshup1( u );
eshup1( u );
eaddm( u, y );
eiremain( t, y );
digit = equot[NI-1];
expon -= 1;
}
s = string; if( sign )
*s++ = '-'; else
*s++ = ' '; /* Examine number of digits requested by caller. */ if( ndigs < 0 )
ndigs = 0; if( ndigs > NDEC )
ndigs = NDEC; if( digit == 10 )
{
*s++ = '1';
*s++ = '.'; if( ndigs > 0 )
{
*s++ = '0';
ndigs -= 1;
}
expon += 1;
} else
{
*s++ = (char )digit + '0';
*s++ = '.';
} /* Generate digits after the decimal point. */ for( k=0; k<=ndigs; k++ )
{ /* multiply current number by 10, without normalizing */
eshup1( y );
emovz( y, u );
eshup1( u );
eshup1( u );
eaddm( u, y );
eiremain( t, y );
*s++ = (char )equot[NI-1] + '0';
}
digit = equot[NI-1];
--s;
ss = s; /* round off the ASCII string */ if( digit > 4 )
{ /* Test for critical rounding case in ASCII output. */ if( digit == 5 )
{
emovo( y, t ); if( ecmp(t,ezero) != 0 ) goto roun; /* round to nearest */ if( (*(s-1) & 1) == 0 ) goto doexp; /* round to even */
} /* Round up and propagate carry-outs */
roun:
--s;
k = *s & 0x7f; /* Carry out to most significant digit? */ if( k == '.' )
{
--s;
k = *s;
k += 1;
*s = (char )k; /* Most significant digit carries to 10? */ if( k > '9' )
{
expon += 1;
*s = '1';
} goto doexp;
} /* Round up and carry out from less significant digits */
k += 1;
*s = (char )k; if( k > '9' )
{
*s = '0'; goto roun;
}
}
doexp: /* if(expon>=0) sprintf(ss,"e+%d",expon); else sprintf(ss,"e%d",expon);
*/
sprintf( ss, "E%d", expon );
bxit:
rndprc = rndsav;
}
rndprc = rndsav;
yy[0] = nsign; switch( oprec )
{ #ifdef DEC case56:
todec( yy, y ); /* see etodec.c */ break; #endif case53:
toe53( yy, y ); break; case24:
toe24( yy, y ); break; case64:
toe64( yy, y ); break; case113:
toe113( yy, y ); break; case NBITS:
emovo( yy, y ); break;
}
}
/* y = largest integer not greater than x *(truncatedtowardminusinfinity) * *unsignedshortx[NE],y[NE] * *efloor(x,y);
*/ staticunsignedshort bmask[] = { 0xffff, 0xfffe, 0xfffc, 0xfff8, 0xfff0, 0xffe0, 0xffc0, 0xff80, 0xff00, 0xfe00, 0xfc00, 0xf800, 0xf000, 0xe000, 0xc000, 0x8000, 0x0000,
};
void efloor( x, y ) unsignedshort x[], y[];
{ registerunsignedshort *p; int e, expon, i; unsignedshort f[NE];
emov( x, f ); /* leave in external format */
expon = (int )f[NE-1];
e = (expon & 0x7fff) - (EXONE - 1); if( e <= 0 )
{
eclear(y); goto isitneg;
} /* number of bits to clear out */
e = NBITS - e;
emov( f, y ); if( e <= 0 ) return;
p = &y[0]; while( e >= 16 )
{
*p++ = 0;
e -= 16;
} /* clear the remaining bits */
*p &= bmask[e]; /* truncate negatives toward minus infinity */
isitneg:
/* unsigned short x[], s[]; *long*exp; * *efrexp(x,exp,s); * *Returnssandexpsuchthats*2**exp=xand.5<=s<1. *Forexample,1.1=0.55*2**1 *Handlesdenormalizednumbersproperlyusinglongintegerexp.
*/ void efrexp( x, exp, s ) unsignedshort x[]; long *exp; unsignedshort s[];
{ unsignedshort xi[NI]; long li;
emovi( x, xi );
li = (long )((short )xi[1]);
if( li == 0 )
{
li -= enormlz( xi );
}
xi[1] = 0x3ffe;
emovo( xi, s );
*exp = li - 0x3ffe;
}
/* unsigned short x[], y[]; *longpwr2; * *eldexp(x,pwr2,y); * *Returnsy=x*2**pwr2.
*/ void eldexp( x, pwr2, y ) unsignedshort x[]; long pwr2; unsignedshort y[];
{ unsignedshort xi[NI]; long li; int i;
emovi( x, xi );
li = xi[1];
li += pwr2;
i = 0;
emdnorm( xi, i, i, li, 64 );
emovo( xi, y );
}
/* c = remainder after dividing b by a *Leastsignificantintegerquotientbitsleftinequot[].
*/ void eremain( a, b, c ) unsignedshort a[], b[], c[];
{ unsignedshort den[NI], num[NI];
#ifdef NANS if( eisinf(b) || (ecmp(a,ezero) == 0) || eisnan(a) || eisnan(b))
{
enan( c, NBITS ); return;
} #endif if( ecmp(a,ezero) == 0 )
{
mtherr( "eremain", SING );
eclear( c ); return;
}
emovi( a, den );
emovi( b, num );
eiremain( den, num ); /* Sign of remainder = sign of quotient */ if( a[0] == b[0] )
num[0] = 0; else
num[0] = 0xffff;
emovo( num, c );
}
void eiremain( den, num ) unsignedshort den[], num[];
{ long ld, ln; unsignedshort j;
void esqrt( x, y ) unsignedshort *x, *y;
{ unsignedshort temp[NI], num[NI], sq[NI], xx[NI]; int i, j, k, n, nlups; long m, exp;
if( esqinited == 0 )
{
ecleaz( sqrndbit );
sqrndbit[NI-2] = 1;
esqinited = 1;
} /* Check for arg <= 0 */
i = ecmp( x, ezero ); if( i <= 0 )
{ #ifdef NANS if (i == -2)
{
enan (y, NBITS); return;
} #endif
eclear(y); if( i < 0 )
mtherr( "esqrt", DOMAIN ); return;
}
#ifdef INFINITY if( eisinf(x) )
{
eclear(y);
einfin(y); return;
} #endif /* Bring in the arg and renormalize if it is denormal. */
emovi( x, xx );
m = (long )xx[1]; /* local long word exponent */ if( m == 0 )
m -= enormlz( xx );
/* Divide exponent by 2 */
m -= 0x3ffe;
exp = (unsignedshort )( (m / 2) + 0x3ffe );
/* Adjust if exponent odd */ if( (m & 1) != 0 )
{ if( m > 0 )
exp += 1;
eshdn1( xx );
}
ecleaz( sq );
ecleaz( num );
n = 8; /* get 8 bits of result per inner loop */
nlups = rndprc;
j = 0;
while( nlups > 0 )
{ /* bring in next word of arg */ if( j < NE )
num[NI-1] = xx[j+3]; /* Do additional bit on last outer loop, for roundoff. */ if( nlups <= 8 )
n = nlups + 1; for( i=0; i<n; i++ )
{ /* Next 2 bits of arg */
eshup1( num );
eshup1( num ); /* Shift up answer */
eshup1( sq ); /* Make trial divisor */ for( k=0; k<NI; k++ )
temp[k] = sq[k];
eshup1( temp );
eaddm( sqrndbit, temp ); /* Subtract and insert answer bit if it goes in */ if( ecmpm( temp, num ) <= 0 )
{
esubm( temp, num );
sq[NI-2] |= 1;
}
}
nlups -= n;
j += 1;
}
/* Sticky bit = 1 if the remainder is nonzero. */
k = 0; for( i=3; i<NI; i++ )
k |= (int )num[i];
/* Renormalize and round off. */
emdnorm( sq, k, 0, exp, 64 );
emovo( sq, y );
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.86Bemerkung:
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-06-14)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.