Home | History | Annotate | Download | only in lib

Lines Matching refs:bigpow

351         cep->scmeanpowLFZ = cep->pdflfz->bigpow - cep->pdflfz->meanpow;
352 cep->scmeanpowMGC = cep->pdfmgc->bigpow - cep->pdfmgc->meanpow;
529 * @param bigpow (int) : normalization factor=2**N, where N=number of binary decimal digits
531 * do extra division by 1<<bigpow so that result has again single decimal size
537 picoos_uint8 bigpow, picoos_uint8 invDoubleDec)
542 big = 1 << bigpow;
546 a = x >> bigpow;
547 b = x - (a << bigpow);
549 a = -1 * ((x * -1) >> bigpow); /* most significant 2 bytes of x */
550 b = x - (a << bigpow);
556 c = y >> bigpow;
557 d = y - (c << bigpow);
559 c = -1 * ((y * -1) >> bigpow);
560 d = y - (c << bigpow);
564 e = a * d + b * c + picocep_fixptdivpow(b * d, bigpow);
565 z = a * c + picocep_fixptdivpow(e, bigpow);
567 z = ((a * c) << bigpow) + (a * d + b * c) + picocep_fixptdivpow(b * d,
568 bigpow); /* 4 mult and 3 add instead of 1 mult. */
577 * @param bigpow (int) : normalization factor=2**N, where N=number of binary decimal digits
579 * do extra division by 1<<bigpow so that result has again single decimal size
598 picoos_uint8 bigpow, picoos_uint8 invDoubleDec)
610 pow = bigpow;
612 pow += bigpow;
624 PICODBG_WARN(("picocep_fixptmult warning: overflow in fixed point multiplication %i*%i, multsz = %i, pow = %i, decrease bigpow\n", x, y, multsz, pow));
627 z = picocep_fixptmultdouble(x, y, bigpow, invDoubleDec); /* perform long multiplication for large x and y */
638 * @param bigpow (int) : normalization factor=2**N, where N=number of binary decimal digits
654 picoos_uint8 bigpow)
668 c = c + (h << bigpow); /* after first loop simply set bit */
670 bigpow--;
673 while ((bigpow > stop) && (r != 0)) { /* calculate bigpow bits after fixed point */
676 c += (1 << bigpow); /* after first loop simply set bit */
679 bigpow--;
702 * @param bigpow (int) : fixed point base used during cepstral smoothing
711 picoos_uint8* rowscpow, picoos_uint8 bigpow, picoos_uint8 invpow)
720 if (invpow + bigpow > 30 + dlen) { /* c must be < 2^32, hence d which is >= 2^(dlen-1) must be > 2^(invpow+bigpow-32), or invpow+bigpow must be <= dlen+30*/
721 *rowscpow = invpow + bigpow - 30 - dlen;PICODBG_DEBUG(("input to picocep_fixptInvDiagEle is %i <= 1<<%i = 1<<invpow+bigpow-32. Choose lower invpow. For now scaling row by 1<<%i\n", d, invpow+bigpow-32, *rowscpow));
731 c += (h << bigpow);
734 bigpow--;
738 while ((bigpow > stop) && (r != 0)) {
740 c += (1 << bigpow);
743 bigpow--;
765 * @param bigpow(uint8) : N = bigpow when invDoubleDec==0, else N = 2*bigpow
775 picoos_uint8 bigpow, picoos_uint8 invpow, picoos_uint8 invDoubleDec)
780 c = picocep_fixptmult(a, invb, bigpow, invDoubleDec);
782 /* if invDoubleDec==0, picocep_fixptmult assumes a and invb are in base 1<<bigpow and returns c = (a*b)/1<<bigpow
783 Since invb is in base 1<<invpow instead of 1<<bigpow, normalize c by 1<<(bigpow-invpow)
785 multiply additionally by 1<<bigpow*2 (for invb and c) so that base of c is again 2*bigpow
790 normpow = 3 * bigpow;
792 normpow = bigpow;
855 * @param invDoubleDec : boolean indicating that result of picocep_fixptinv has fixed point base 2*bigpow
870 picoos_uint8 bigpow = pdf->bigpow;
876 bigpow, invpow); /* inverse has fixed point basis 1<<invpow */
878 cep->invdiag0[0], bigpow, invpow, invDoubleDec); /* perform division via inverse */
880 cep->invdiag0[0], bigpow, invpow, invDoubleDec);
885 cep->WUm[j - 1], bigpow, invDoubleDec);
888 cep->WUm[j - 2], bigpow, invDoubleDec);
893 cep->diag0[j - 1], bigpow, invDoubleDec); /* undo scaling by 1<<rowscpow because diag1(j-1) refers to symm ele in column j-1 not in row j-1 */
895 v1, bigpow, invDoubleDec);
898 cep->diag0[j - 2], bigpow, invDoubleDec); /* undo scaling by 1<<prevrowscpow because diag1(j-2) refers to symm ele in column j-2 not in row j-2 */
900 cep->diag2[j - 2], v2, bigpow, invDoubleDec);
904 bigpow, invpow); /* inverse has fixed point basis 1<<invpow */
907 h = picocep_fixptmult(cep->diag2[j - 1], v1, bigpow, invDoubleDec);
909 cep->invdiag0[j], bigpow, invpow, invDoubleDec); /* eliminate column j below pivot */
913 cep->invdiag0[j], bigpow, invpow, invDoubleDec); /* eliminate column j below pivot */
919 cep->WUm[j] = picocep_fixptinv(cep->WUm[j], cep->invdiag0[j], bigpow,
922 bigpow);
929 + 1], bigpow, invDoubleDec);
932 cep->WUm[j + 2], bigpow, invDoubleDec);
936 /* coefficients normalized to occupy short; for correct waveform energy, divide by (1<<(bigpow-meanpow)) then convert e.g. to picoos_single */
1063 bigpow, meanpowUm, ivarpow, PICOCEP_WANTIVAR, PICOCEP_WANTDELTA2);
1071 cep->diag1[i] = (picoos_int32)(pdf->content[k]) << pdf->bigpow;
1083 cep->diag1[i] += (picoos_int32)(pdf->content[k]) << pdf->bigpow; */
1104 cep->diag2[i] = (picoos_int32)(pdf->content[k]) << pdf->bigpow;
1106 ivar = (picoos_int32)(pdf->content[k]) << pdf->bigpow;
1327 prev_mean = mean = picocep_fixptdiv(mean, ivar, pdf->bigpow);
1801 * scmeanpow = pdf->bigpow - pdf->meanpow;