@@ -4976,7 +4976,6 @@ VpMult(Real *c, Real *a, Real *b)
4976
4976
size_t ind_as , ind_ae , ind_bs ;
4977
4977
DECDIG carry ;
4978
4978
DECDIG_DBL s ;
4979
- Real * w ;
4980
4979
4981
4980
if (!VpIsDefOP (c , a , b , OP_SW_MULT )) return 0 ; /* No significant digit */
4982
4981
@@ -4996,29 +4995,19 @@ VpMult(Real *c, Real *a, Real *b)
4996
4995
}
4997
4996
if (b -> Prec > a -> Prec ) {
4998
4997
/* Adjust so that digits(a)>digits(b) */
4999
- w = a ;
4998
+ Real * w = a ;
5000
4999
a = b ;
5001
5000
b = w ;
5002
5001
}
5003
- w = NULL ;
5004
5002
MxIndA = a -> Prec - 1 ;
5005
5003
MxIndB = b -> Prec - 1 ;
5006
5004
MxIndAB = a -> Prec + b -> Prec - 1 ;
5007
5005
5008
- // Only VpSqrt calls VpMult with insufficient precision
5009
- if (c -> MaxPrec < VPMULT_RESULT_PREC (a , b )) {
5010
- w = c ;
5011
- c = NewZeroNolimit (1 , VPMULT_RESULT_PREC (a , b ) * BASE_FIG );
5012
- }
5013
-
5014
5006
/* set LHSV c info */
5015
5007
5016
5008
c -> exponent = a -> exponent ; /* set exponent */
5017
5009
VpSetSign (c , VpGetSign (a ) * VpGetSign (b )); /* set sign */
5018
- if (!AddExponent (c , b -> exponent )) {
5019
- if (w ) rbd_free_struct (c );
5020
- return 0 ;
5021
- }
5010
+ if (!AddExponent (c , b -> exponent )) return 0 ;
5022
5011
carry = 0 ;
5023
5012
nc = ind_c = MxIndAB ;
5024
5013
memset (c -> frac , 0 , (nc + 1 ) * sizeof (DECDIG )); /* Initialize c */
@@ -5066,11 +5055,6 @@ VpMult(Real *c, Real *a, Real *b)
5066
5055
}
5067
5056
}
5068
5057
VpNmlz (c );
5069
- if (w != NULL ) { /* free work variable */
5070
- VpAsgn (w , c , 10 );
5071
- rbd_free_struct (c );
5072
- c = w ;
5073
- }
5074
5058
5075
5059
Exit :
5076
5060
return c -> Prec * BASE_FIG ;
0 commit comments