in interactive_engine/executor/common/dyn_type/src/arith.rs [25:189]
fn add(self, other: Primitives) -> Self::Output {
use super::Primitives::*;
match (self, other) {
(Double(a), Double(b)) => Double(a + b),
(Double(a), Float(b)) => Double(a + b as f64),
(Double(a), ULLong(b)) => Double(a + b as f64),
(Double(a), ULong(b)) => Double(a + b as f64),
(Double(a), Long(b)) => Double(a + b as f64),
(Double(a), UInteger(b)) => Double(a + b as f64),
(Double(a), Integer(b)) => Double(a + b as f64),
(Double(a), Byte(b)) => Double(a + b as f64),
(Float(a), Double(b)) => Double(a as f64 + b),
(ULLong(a), Double(b)) => Double(a as f64 + b),
(ULong(a), Double(b)) => Double(a as f64 + b),
(Long(a), Double(b)) => Double(a as f64 + b),
(UInteger(a), Double(b)) => Double(a as f64 + b),
(Integer(a), Double(b)) => Double(a as f64 + b),
(Byte(a), Double(b)) => Double(a as f64 + b),
(Float(a), Float(b)) => Float(a + b),
(Float(a), ULLong(b)) => Float(a + b as f32),
(Float(a), ULong(b)) => Float(a + b as f32),
(Float(a), Long(b)) => Float(a + b as f32),
(Float(a), UInteger(b)) => Float(a + b as f32),
(Float(a), Integer(b)) => Float(a + b as f32),
(Float(a), Byte(b)) => Float(a + b as f32),
(ULLong(a), Float(b)) => Float(a as f32 + b),
(ULong(a), Float(b)) => Float(a as f32 + b),
(Long(a), Float(b)) => Float(a as f32 + b),
(UInteger(a), Float(b)) => Float(a as f32 + b),
(Integer(a), Float(b)) => Float(a as f32 + b),
(Byte(a), Float(b)) => Float(a as f32 + b),
(ULLong(a), ULLong(b)) => ULLong(a + b),
(ULLong(a), ULong(b)) => ULLong(a + b as u128),
(ULLong(a), Long(b)) => {
if b < 0 {
ULLong(a - b.abs() as u128)
} else {
ULLong(a + b as u128)
}
}
(ULLong(a), UInteger(b)) => ULLong(a + b as u128),
(ULLong(a), Integer(b)) => {
if b < 0 {
ULLong(a - b.abs() as u128)
} else {
ULLong(a + b as u128)
}
}
(ULLong(a), Byte(b)) => {
if b < 0 {
ULLong(a - b.abs() as u128)
} else {
ULLong(a + b as u128)
}
}
(ULong(a), ULLong(b)) => ULLong(a as u128 + b),
(Long(a), ULLong(b)) => {
if a < 0 {
ULLong(b - a.abs() as u128)
} else {
ULLong(a as u128 + b)
}
}
(UInteger(a), ULLong(b)) => ULLong(a as u128 + b),
(Integer(a), ULLong(b)) => {
if a < 0 {
ULLong(b - a.abs() as u128)
} else {
ULLong(a as u128 + b)
}
}
(Byte(a), ULLong(b)) => {
if a < 0 {
ULLong(b - a.abs() as u128)
} else {
ULLong(a as u128 + b)
}
}
(ULong(a), ULong(b)) => ULong(a + b),
(ULong(a), Long(b)) => {
if b < 0 {
ULong(a - b.abs() as u64)
} else {
ULong(a + b as u64)
}
}
(ULong(a), UInteger(b)) => ULong(a + b as u64),
(ULong(a), Integer(b)) => {
if b < 0 {
ULong(a - b.abs() as u64)
} else {
ULong(a + b as u64)
}
}
(ULong(a), Byte(b)) => {
if b < 0 {
ULong(a - b.abs() as u64)
} else {
ULong(a + b as u64)
}
}
(Long(a), ULong(b)) => {
if a < 0 {
ULong(b - a.abs() as u64)
} else {
ULong(a as u64 + b)
}
}
(UInteger(a), ULong(b)) => ULong(a as u64 + b),
(Integer(a), ULong(b)) => {
if a < 0 {
ULong(b - a.abs() as u64)
} else {
ULong(a as u64 + b)
}
}
(Byte(a), ULong(b)) => {
if a < 0 {
ULong(b - a.abs() as u64)
} else {
ULong(a as u64 + b)
}
}
(Long(a), Long(b)) => Long(a + b),
(Long(a), UInteger(b)) => Long(a + b as i64),
(Long(a), Integer(b)) => Long(a + b as i64),
(Long(a), Byte(b)) => Long(a + b as i64),
(UInteger(a), Long(b)) => Long(a as i64 + b),
(Integer(a), Long(b)) => Long(a as i64 + b),
(Byte(a), Long(b)) => Long(a as i64 + b),
(UInteger(a), UInteger(b)) => UInteger(a + b),
(UInteger(a), Integer(b)) => {
if b < 0 {
UInteger(a - b.abs() as u32)
} else {
UInteger(a + b as u32)
}
}
(UInteger(a), Byte(b)) => {
if b < 0 {
UInteger(a - b.abs() as u32)
} else {
UInteger(a + b as u32)
}
}
(Integer(a), UInteger(b)) => {
if a < 0 {
UInteger(b - a.abs() as u32)
} else {
UInteger(a as u32 + b)
}
}
(Byte(a), UInteger(b)) => {
if a < 0 {
UInteger(b - a.abs() as u32)
} else {
UInteger(a as u32 + b)
}
}
(Integer(a), Integer(b)) => Integer(a + b),
(Integer(a), Byte(b)) => Integer(a + b as i32),
(Byte(a), Integer(b)) => Integer(a as i32 + b),
(Byte(a), Byte(b)) => Byte(a + b),
}
}