Lines Matching refs:pA

260 static int decimal_cmp(const Decimal *pA, const Decimal *pB){  in decimal_cmp()  argument
262 if( pA->sign!=pB->sign ){ in decimal_cmp()
263 return pA->sign ? -1 : +1; in decimal_cmp()
265 if( pA->sign ){ in decimal_cmp()
266 const Decimal *pTemp = pA; in decimal_cmp()
267 pA = pB; in decimal_cmp()
270 nASig = pA->nDigit - pA->nFrac; in decimal_cmp()
275 n = pA->nDigit; in decimal_cmp()
277 rc = memcmp(pA->a, pB->a, n); in decimal_cmp()
279 rc = pA->nDigit - pB->nDigit; in decimal_cmp()
295 Decimal *pA = 0, *pB = 0; in decimalCmpFunc() local
299 pA = decimal_new(context, argv[0], 0, 0); in decimalCmpFunc()
300 if( pA==0 || pA->isNull ) goto cmp_done; in decimalCmpFunc()
303 rc = decimal_cmp(pA, pB); in decimalCmpFunc()
308 decimal_free(pA); in decimalCmpFunc()
345 static void decimal_add(Decimal *pA, Decimal *pB){ in decimal_add() argument
348 if( pA==0 ){ in decimal_add()
351 if( pA->oom || pB==0 || pB->oom ){ in decimal_add()
352 pA->oom = 1; in decimal_add()
355 if( pA->isNull || pB->isNull ){ in decimal_add()
356 pA->isNull = 1; in decimal_add()
359 nSig = pA->nDigit - pA->nFrac; in decimal_add()
360 if( nSig && pA->a[0]==0 ) nSig--; in decimal_add()
364 nFrac = pA->nFrac; in decimal_add()
367 decimal_expand(pA, nDigit, nFrac); in decimal_add()
369 if( pA->oom || pB->oom ){ in decimal_add()
370 pA->oom = 1; in decimal_add()
372 if( pA->sign==pB->sign ){ in decimal_add()
375 int x = pA->a[i] + pB->a[i] + carry; in decimal_add()
378 pA->a[i] = x - 10; in decimal_add()
381 pA->a[i] = x; in decimal_add()
387 rc = memcmp(pA->a, pB->a, nDigit); in decimal_add()
390 aB = pA->a; in decimal_add()
391 pA->sign = !pA->sign; in decimal_add()
393 aA = pA->a; in decimal_add()
399 pA->a[i] = x+10; in decimal_add()
402 pA->a[i] = x; in decimal_add()
420 Decimal *pA = decimal_new(0, 0, nKey1, zA); in decimalCollFunc() local
424 if( pA==0 || pB==0 ){ in decimalCollFunc()
427 rc = decimal_cmp(pA, pB); in decimalCollFunc()
429 decimal_free(pA); in decimalCollFunc()
446 Decimal *pA = decimal_new(context, argv[0], 0, 0); in decimalAddFunc() local
449 decimal_add(pA, pB); in decimalAddFunc()
450 decimal_result(context, pA); in decimalAddFunc()
451 decimal_free(pA); in decimalAddFunc()
459 Decimal *pA = decimal_new(context, argv[0], 0, 0); in decimalSubFunc() local
464 decimal_add(pA, pB); in decimalSubFunc()
465 decimal_result(context, pA); in decimalSubFunc()
467 decimal_free(pA); in decimalSubFunc()
545 Decimal *pA = decimal_new(context, argv[0], 0, 0); in decimalMulFunc() local
551 if( pA==0 || pA->oom || pA->isNull in decimalMulFunc()
556 acc = sqlite3_malloc64( pA->nDigit + pB->nDigit + 2 ); in decimalMulFunc()
561 memset(acc, 0, pA->nDigit + pB->nDigit + 2); in decimalMulFunc()
562 minFrac = pA->nFrac; in decimalMulFunc()
564 for(i=pA->nDigit-1; i>=0; i--){ in decimalMulFunc()
565 signed char f = pA->a[i]; in decimalMulFunc()
576 sqlite3_free(pA->a); in decimalMulFunc()
577 pA->a = acc; in decimalMulFunc()
579 pA->nDigit += pB->nDigit + 2; in decimalMulFunc()
580 pA->nFrac += pB->nFrac; in decimalMulFunc()
581 pA->sign ^= pB->sign; in decimalMulFunc()
582 while( pA->nFrac>minFrac && pA->a[pA->nDigit-1]==0 ){ in decimalMulFunc()
583 pA->nFrac--; in decimalMulFunc()
584 pA->nDigit--; in decimalMulFunc()
586 decimal_result(context, pA); in decimalMulFunc()
590 decimal_free(pA); in decimalMulFunc()