134
| tPI %prec HIGH {mp_get_pi($$);}
134
| tPI %prec HIGH {mp_get_pi(&$$);}
140
| exp '+' exp {mp_add($1, $3, $$);}
141
| exp '-' exp {mp_subtract($1, $3, $$);}
140
| exp '+' exp {mp_add(&$1, &$3, &$$);}
141
| exp '-' exp {mp_subtract(&$1, &$3, &$$);}
143
143
| exp tMOD exp %prec MED {
144
if (!mp_is_integer($1) || !mp_is_integer($3)) {
144
if (!mp_is_integer(&$1) || !mp_is_integer(&$3)) {
145
145
parser_state.error = -PARSER_ERR_MODULUSOP;
147
if (mp_modulus_divide($1, $3, $$)) {
147
if (mp_modulus_divide(&$1, &$3, &$$)) {
148
148
parser_state.error = -EINVAL;
154
if (!mp_is_natural($1) || !mp_is_natural($3)) {
154
if (!mp_is_natural(&$1) || !mp_is_natural(&$3)) {
155
155
parser_state.error = -PARSER_ERR_BITWISEOP;
157
mp_and(&$1, &$3, &$$);
160
if (!mp_is_natural($1) || !mp_is_natural($3)) {
160
if (!mp_is_natural(&$1) || !mp_is_natural(&$3)) {
161
161
parser_state.error = -PARSER_ERR_BITWISEOP;
163
mp_or(&$1, &$3, &$$);
165
165
| exp tXNOR exp {
166
if (!mp_is_natural($1) || !mp_is_natural($3)) {
166
if (!mp_is_natural(&$1) || !mp_is_natural(&$3)) {
167
167
parser_state.error = -PARSER_ERR_BITWISEOP;
169
mp_xnor(&$1, &$3, &$$);
172
if (!mp_is_natural($1) || !mp_is_natural($3)) {
172
if (!mp_is_natural(&$1) || !mp_is_natural(&$3)) {
173
173
parser_state.error = -PARSER_ERR_BITWISEOP;
175
mp_xor(&$1, &$3, &$$);
183
| term '/' term {mpdiv($1, $3, $$);}
184
| term '*' term {mpmul($1, $3, $$);}
185
| 'e' '^' term {mp_epowy($3, $$);}
186
| term '!' {mp_factorial($1 ,$$);}
187
| term '%' {mp_percent($1, $$);}
181
number {cp(&$1, &$$);}
182
| rcl {cp(&$1, &$$);}
183
| term '/' term {mpdiv(&$1, &$3, &$$);}
184
| term '*' term {mpmul(&$1, &$3, &$$);}
185
| 'e' '^' term {mp_epowy(&$3, &$$);}
186
| term '!' {mp_factorial(&$1, &$$);}
187
| term '%' {mp_percent(&$1, &$$);}
188
188
| '~' term %prec LNEG {
189
if (!mp_is_natural($2)) {
189
if (!mp_is_natural(&$2)) {
190
190
parser_state.error = -PARSER_ERR_BITWISEOP;
194
| '-' term %prec NEG {mp_invert_sign($2, $$);}
195
| '+' term %prec POS {cp($2, $$);}
196
| term '^' term {mp_xpowy($1, $3, $$);}
201
| parenthesis {cp($1, $$);}
194
| '-' term %prec NEG {mp_invert_sign(&$2, &$$);}
195
| '+' term %prec POS {cp(&$2, &$$);}
196
| term '^' term {mp_xpowy(&$1, &$3, &$$);}
198
| func {cp(&$1, &$$);}
199
| reg {cp(&$1, &$$);}
201
| parenthesis {cp(&$1, &$$);}
205
'(' exp ')' {cp($2, $$);}
205
'(' exp ')' {cp(&$2, &$$);}
209
tREG {register_get($1, $$);}
209
tREG {register_get($1, &$$);}
213
tLOG10 term %prec HIGH {mp_logarithm(10, $2, $$);}
214
| tLOG2 term %prec HIGH {mp_logarithm(2, $2, $$);}
215
| tSQRT term %prec HIGH {mp_sqrt($2, $$);}
216
| tLN term %prec HIGH {mpln($2, $$);}
217
| tRAND %prec HIGH {mp_set_from_random($$);}
218
| tABS term %prec HIGH {mp_abs($2, $$);}
219
| tFRAC term %prec HIGH {mpcmf($2, $$);}
220
| tINT term %prec HIGH {mpcmim($2, $$);}
221
| tCHS term %prec HIGH {mp_invert_sign($2, $$);}
223
| tSIN term %prec HIGH {to_rad($2, $2); mp_sin($2, $$);}
224
| tCOS term %prec HIGH {to_rad($2, $2); mp_cos($2, $$);}
225
| tTAN term %prec HIGH {to_rad($2, $2); mp_tan($2, $$);}
226
| tASIN term %prec HIGH {mp_asin($2, $$); do_trig_typeconv(v->ttype, $$, $$);}
227
| tACOS term %prec HIGH {mp_acos($2, $$); do_trig_typeconv(v->ttype, $$, $$);}
228
| tATAN term %prec HIGH {mp_atan($2, $$); do_trig_typeconv(v->ttype, $$, $$);}
229
| tSINH term %prec HIGH {mp_sinh($2, $$);}
230
| tCOSH term %prec HIGH {mp_cosh($2, $$);}
231
| tTANH term %prec HIGH {mp_tanh($2, $$);}
232
| tASINH term %prec HIGH {mp_asinh($2, $$);}
233
| tACOSH term %prec HIGH {mp_acosh($2, $$);}
234
| tATANH term %prec HIGH {mp_atanh($2, $$);}
236
| tU32 term %prec HIGH {mp_mask_u32($2, $$);}
237
| tU16 term %prec HIGH {mp_mask_u16($2, $$);}
213
tLOG10 term %prec HIGH {mp_logarithm(10, &$2, &$$);}
214
| tLOG2 term %prec HIGH {mp_logarithm(2, &$2, &$$);}
215
| tSQRT term %prec HIGH {mp_sqrt(&$2, &$$);}
216
| tLN term %prec HIGH {mpln(&$2, &$$);}
217
| tRAND %prec HIGH {mp_set_from_random(&$$);}
218
| tABS term %prec HIGH {mp_abs(&$2, &$$);}
219
| tFRAC term %prec HIGH {mpcmf(&$2, &$$);}
220
| tINT term %prec HIGH {mpcmim(&$2, &$$);}
221
| tCHS term %prec HIGH {mp_invert_sign(&$2, &$$);}
223
| tSIN term %prec HIGH {to_rad(&$2, &$2); mp_sin(&$2, &$$);}
224
| tCOS term %prec HIGH {to_rad(&$2, &$2); mp_cos(&$2, &$$);}
225
| tTAN term %prec HIGH {to_rad(&$2, &$2); mp_tan(&$2, &$$);}
226
| tASIN term %prec HIGH {mp_asin(&$2, &$$); do_trig_typeconv(v->ttype, &$$, &$$);}
227
| tACOS term %prec HIGH {mp_acos(&$2, &$$); do_trig_typeconv(v->ttype, &$$, &$$);}
228
| tATAN term %prec HIGH {mp_atan(&$2, &$$); do_trig_typeconv(v->ttype, &$$, &$$);}
229
| tSINH term %prec HIGH {mp_sinh(&$2, &$$);}
230
| tCOSH term %prec HIGH {mp_cosh(&$2, &$$);}
231
| tTANH term %prec HIGH {mp_tanh(&$2, &$$);}
232
| tASINH term %prec HIGH {mp_asinh(&$2, &$$);}
233
| tACOSH term %prec HIGH {mp_acosh(&$2, &$$);}
234
| tATANH term %prec HIGH {mp_atanh(&$2, &$$);}
236
| tU32 term %prec HIGH {mp_mask_u32(&$2, &$$);}
237
| tU16 term %prec HIGH {mp_mask_u16(&$2, &$$);}
241
241
tRCL '(' tNUMBER ')' {
242
int val = mp_cast_to_int($3);
243
register_get(val, $$);
242
int val = mp_cast_to_int(&$3);
243
register_get(val, &$$);
248
tNUMBER {cp($1, $$);}
248
tNUMBER {cp(&$1, &$$);}
250
cp(display_get_answer(&v->display), $$);
250
cp(display_get_answer(&v->display), &$$);