Skip to content

Commit 1043fff

Browse files
authored
fix bugs with identity values (#810)
1 parent 8c232e8 commit 1043fff

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

parser/src/defs.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,8 +1457,7 @@ primitive!(
14571457
/// ex: /× []
14581458
/// ex: /↥ []
14591459
/// ex: /↧ []
1460-
/// ex: /∠ []
1461-
/// ex! /⊡ []
1460+
/// ex! /∊ []
14621461
///
14631462
/// An initial value can be set with [fill].
14641463
/// ex: /↥ []

src/algorithm/reduce.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -248,17 +248,18 @@ fn reduce_identity(node: &Node, mut val: Value) -> Option<Value> {
248248
val
249249
}
250250
_ => match last {
251-
Node::Prim(Add | Sub, _) if init_sig() => Array::new(shape, eco_vec![0u8; len]).into(),
252-
Node::Prim(Mul | Div | Modulo, _) if init_sig() => {
253-
Array::new(shape, eco_vec![f64::INFINITY; len]).into()
251+
Node::Prim(Add | Sub | Or | Complex, _) if init_sig() => {
252+
Array::new(shape, eco_vec![0u8; len]).into()
253+
}
254+
Node::Prim(Mul | Div | Pow, _) if init_sig() => {
255+
Array::new(shape, eco_vec![1u8; len]).into()
254256
}
255257
Node::Prim(Max, _) if init_sig() => {
256258
Array::new(shape, eco_vec![f64::NEG_INFINITY; len]).into()
257259
}
258-
Node::Prim(Min, _) if init_sig() => {
260+
Node::Prim(Modulo | Min, _) if init_sig() => {
259261
Array::new(shape, eco_vec![f64::INFINITY; len]).into()
260262
}
261-
Node::Prim(Atan, _) if init_sig() => Array::new(shape, eco_vec![0.0; len]).into(),
262263
Node::Prim(Join, _) if init_sig() => {
263264
if val.rank() < 2 {
264265
val.shape[0] = 0;

tests/loops.ua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,13 @@ A ← ↯2_3_4⇡24
8080
⍤⤙≍ "" /$"_ _" []
8181

8282
⍤⤙≍ ∞ /◿ []
83+
⍤⤙≍ ¯∞ /↥ []
84+
⍤⤙≍ ∞ /↧ []
85+
⍤⤙≍ 1 /× []
86+
⍤⤙≍ 1 /(×?) []
87+
⍤⤙≍ 1 /ⁿ []
88+
⍤⤙≍ 1 /÷ []
89+
⍤⤙≍ 0 /ℂ []
8390

8491
# Reduce join
8592
⍤⤙≍ [7 5]/(⊂?)[7_5]

0 commit comments

Comments
 (0)