Lines Matching defs:pA
2604 ** pA!=0
2605 ** pA->isNull==0
2609 static int decimal_cmp(const Decimal *pA, const Decimal *pB){
2611 if( pA->sign!=pB->sign ){
2612 return pA->sign ? -1 : +1;
2614 if( pA->sign ){
2615 const Decimal *pTemp = pA;
2616 pA = pB;
2619 nASig = pA->nDigit - pA->nFrac;
2624 n = pA->nDigit;
2626 rc = memcmp(pA->a, pB->a, n);
2628 rc = pA->nDigit - pB->nDigit;
2644 Decimal *pA = 0, *pB = 0;
2648 pA = decimal_new(context, argv[0], 0, 0);
2649 if( pA==0 || pA->isNull ) goto cmp_done;
2652 rc = decimal_cmp(pA, pB);
2657 decimal_free(pA);
2690 ** Add the value pB into pA.
2692 ** Both pA and pB might become denormalized by this routine.
2694 static void decimal_add(Decimal *pA, Decimal *pB){
2697 if( pA==0 ){
2700 if( pA->oom || pB==0 || pB->oom ){
2701 pA->oom = 1;
2704 if( pA->isNull || pB->isNull ){
2705 pA->isNull = 1;
2708 nSig = pA->nDigit - pA->nFrac;
2709 if( nSig && pA->a[0]==0 ) nSig--;
2713 nFrac = pA->nFrac;
2716 decimal_expand(pA, nDigit, nFrac);
2718 if( pA->oom || pB->oom ){
2719 pA->oom = 1;
2721 if( pA->sign==pB->sign ){
2724 int x = pA->a[i] + pB->a[i] + carry;
2727 pA->a[i] = x - 10;
2730 pA->a[i] = x;
2736 rc = memcmp(pA->a, pB->a, nDigit);
2739 aB = pA->a;
2740 pA->sign = !pA->sign;
2742 aA = pA->a;
2748 pA->a[i] = x+10;
2751 pA->a[i] = x;
2769 Decimal *pA = decimal_new(0, 0, nKey1, zA);
2773 if( pA==0 || pB==0 ){
2776 rc = decimal_cmp(pA, pB);
2778 decimal_free(pA);
2795 Decimal *pA = decimal_new(context, argv[0], 0, 0);
2798 decimal_add(pA, pB);
2799 decimal_result(context, pA);
2800 decimal_free(pA);
2808 Decimal *pA = decimal_new(context, argv[0], 0, 0);
2813 decimal_add(pA, pB);
2814 decimal_result(context, pA);
2816 decimal_free(pA);
2894 Decimal *pA = decimal_new(context, argv[0], 0, 0);
2900 if( pA==0 || pA->oom || pA->isNull
2905 acc = sqlite3_malloc64( pA->nDigit + pB->nDigit + 2 );
2910 memset(acc, 0, pA->nDigit + pB->nDigit + 2);
2911 minFrac = pA->nFrac;
2913 for(i=pA->nDigit-1; i>=0; i--){
2914 signed char f = pA->a[i];
2925 sqlite3_free(pA->a);
2926 pA->a = acc;
2928 pA->nDigit += pB->nDigit + 2;
2929 pA->nFrac += pB->nFrac;
2930 pA->sign ^= pB->sign;
2931 while( pA->nFrac>minFrac && pA->a[pA->nDigit-1]==0 ){
2932 pA->nFrac--;
2933 pA->nDigit--;
2935 decimal_result(context, pA);
2939 decimal_free(pA);