add log10() function

This commit is contained in:
Jeff Wang 2019-10-02 23:38:12 -04:00
parent 0f17fbdcc7
commit 21be4081b2
3 changed files with 20 additions and 4 deletions

View File

@ -118,12 +118,21 @@ void process_cmd(char cmd){
toggle_shifted(); toggle_shifted();
} break; } break;
////////// //////////
case '9':{
if (IsShifted && !decn_is_nan(&stack(STACK_X))){ //log10(x)
copy_decn(&AccDecn, &stack(STACK_X));
log10_decn();
copy_decn(&stack(STACK_X), &AccDecn);
IsShifted = 0;
}
} break;
//////////
case '8':{ case '8':{
if (IsShifted && !decn_is_nan(&stack(STACK_X))){ //ln(x) if (IsShifted && !decn_is_nan(&stack(STACK_X))){ //ln(x)
copy_decn(&AccDecn, &stack(STACK_X)); copy_decn(&AccDecn, &stack(STACK_X));
ln_decn(); ln_decn();
copy_decn(&stack(STACK_X), &AccDecn); copy_decn(&stack(STACK_X), &AccDecn);
toggle_shifted(); IsShifted = 0;
} }
} break; } break;
////////// //////////

View File

@ -47,9 +47,9 @@ static const uint8_t num_digits_display = 16;
__idata dec80 AccDecn, BDecn; __idata dec80 AccDecn, BDecn;
__idata dec80 TmpDecn; //used by add_decn() and mult_decn() __idata dec80 TmpDecn; //used by add_decn() and mult_decn()
__idata dec80 Tmp2Decn; //used by div_decn() __idata dec80 Tmp2Decn; //used by div_decn() and ln_decn()
__idata dec80 Tmp3Decn; //used by div_decn() __idata dec80 Tmp3Decn; //used by div_decn() and ln_decn()
__idata dec80 Tmp4Decn; //used by div_decn() __idata dec80 Tmp4Decn; //used by div_decn() and ln_decn()
__xdata char Buf[DECN_BUF_SIZE]; __xdata char Buf[DECN_BUF_SIZE];
@ -1015,6 +1015,12 @@ void ln_decn(void){
#undef NUM_A_ARR #undef NUM_A_ARR
} }
void log10_decn(void){
ln_decn();
copy_decn(&BDecn, &DECN_LN_10);
div_decn();
}
static void set_str_error(void){ static void set_str_error(void){
Buf[0] = 'E'; Buf[0] = 'E';
Buf[1] = 'r'; Buf[1] = 'r';

View File

@ -69,6 +69,7 @@ void mult_decn(void);
void div_decn(void); void div_decn(void);
void ln_decn(void); void ln_decn(void);
void log10_decn(void);
//Buf should hold at least 18 + 4 + 5 + 1 = 28 //Buf should hold at least 18 + 4 + 5 + 1 = 28
#define DECN_BUF_SIZE 28 #define DECN_BUF_SIZE 28