add log10, hyperbolic tan and inverse hyperbolic tan functions (#1898)

This commit is contained in:
Mark
2023-07-20 12:33:23 -06:00
parent dcd7360b17
commit 1697cd5c7f
4 changed files with 173 additions and 0 deletions

View File

@@ -930,6 +930,69 @@ impl Machine {
self.machine_st.p += 1;
}
&Instruction::ACosh(ref a1, t) => {
let n1 = try_or_throw!(self.machine_st, self.machine_st.get_number(a1));
self.machine_st.interms[t - 1] = Number::Float(OrderedFloat(
try_or_throw_gen!(&mut self.machine_st, acosh(n1))
));
self.machine_st.p += 1;
}
&Instruction::ASinh(ref a1, t) => {
let n1 = try_or_throw!(self.machine_st, self.machine_st.get_number(a1));
self.machine_st.interms[t - 1] = Number::Float(OrderedFloat(
try_or_throw_gen!(&mut self.machine_st, asinh(n1))
));
self.machine_st.p += 1;
}
&Instruction::ATanh(ref a1, t) => {
let n1 = try_or_throw!(self.machine_st, self.machine_st.get_number(a1));
self.machine_st.interms[t - 1] = Number::Float(OrderedFloat(
try_or_throw_gen!(&mut self.machine_st, atanh(n1))
));
self.machine_st.p += 1;
}
&Instruction::Cosh(ref a1, t) => {
let n1 = try_or_throw!(self.machine_st, self.machine_st.get_number(a1));
self.machine_st.interms[t - 1] = Number::Float(OrderedFloat(
try_or_throw_gen!(&mut self.machine_st, cosh(n1))
));
self.machine_st.p += 1;
}
&Instruction::Sinh(ref a1, t) => {
let n1 = try_or_throw!(self.machine_st, self.machine_st.get_number(a1));
self.machine_st.interms[t - 1] = Number::Float(OrderedFloat(
try_or_throw_gen!(&mut self.machine_st, sinh(n1))
));
self.machine_st.p += 1;
}
&Instruction::Tanh(ref a1, t) => {
let n1 = try_or_throw!(self.machine_st, self.machine_st.get_number(a1));
self.machine_st.interms[t - 1] = Number::Float(OrderedFloat(
try_or_throw_gen!(&mut self.machine_st, tanh(n1))
));
self.machine_st.p += 1;
}
&Instruction::Log10(ref a1, t) => {
let n1 = try_or_throw!(self.machine_st, self.machine_st.get_number(a1));
self.machine_st.interms[t - 1] = Number::Float(OrderedFloat(
try_or_throw_gen!(&mut self.machine_st, log10(n1))
));
self.machine_st.p += 1;
}
&Instruction::Float(ref a1, t) => {
let n1 = try_or_throw!(self.machine_st, self.machine_st.get_number(a1));