From df2e34211f1bd1e3783f890263a9b8861454be81 Mon Sep 17 00:00:00 2001 From: mgros Date: Tue, 22 Sep 2026 04:09:31 +0200 Subject: [PATCH] de: fix integer exponentiation --- Rules/Languages/de/ClearSpeak_Rules.yaml | 8 +------- Rules/Languages/de/SimpleSpeak_Rules.yaml | 7 ++----- tests/Languages/de/shared.rs | 13 +++++++++++++ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Rules/Languages/de/ClearSpeak_Rules.yaml b/Rules/Languages/de/ClearSpeak_Rules.yaml index d2551ffef..01f8c9eba 100644 --- a/Rules/Languages/de/ClearSpeak_Rules.yaml +++ b/Rules/Languages/de/ClearSpeak_Rules.yaml @@ -326,13 +326,7 @@ replace: - x: "*[1]" - T: "hoch" - - test: - if: "*[2][.>0]" - then: [x: "ToOrdinal(*[2])"] - else: [x: "*[2]"] - - test: - if: "$ClearSpeak_Exponents != 'Ordinal'" - then: [T: "hoch"] + - x: "*[2]" - name: simple-negative-integer tag: power diff --git a/Rules/Languages/de/SimpleSpeak_Rules.yaml b/Rules/Languages/de/SimpleSpeak_Rules.yaml index e04749887..d23a47d7c 100644 --- a/Rules/Languages/de/SimpleSpeak_Rules.yaml +++ b/Rules/Languages/de/SimpleSpeak_Rules.yaml @@ -208,11 +208,8 @@ match: "*[2][self::m:mn][not(contains(., '.'))]" replace: - x: "*[1]" - - T: "zu dem" # phrase(15 raised 'to the' second power equals 225) - - test: - if: "*[2][.>0]" - then: [x: "ToOrdinal(*[2])"] - else: [x: "*[2]"] + - T: "hoch" # phrase(15 raised 'to the' fourth power equals 50625) + - x: "*[2]" - name: simple-negative-integer tag: power match: diff --git a/tests/Languages/de/shared.rs b/tests/Languages/de/shared.rs index 34518d9e0..53d1468db 100644 --- a/tests/Languages/de/shared.rs +++ b/tests/Languages/de/shared.rs @@ -3,6 +3,19 @@ use crate::common::*; use anyhow::Result; +#[test] +fn ordinary_integer_powers() -> Result<()> { + // Ordinary integer exponents use the idiomatic German "hoch" construction. + let fourth_power = "x4"; + test("de", "ClearSpeak", fourth_power, "x hoch 4")?; + test("de", "SimpleSpeak", fourth_power, "x hoch 4")?; + + let zeroth_power = "x0"; + test("de", "ClearSpeak", zeroth_power, "x hoch 0")?; + test("de", "SimpleSpeak", zeroth_power, "x hoch 0")?; + Ok(()) +} + #[test] fn modified_vars() -> Result<()> { let expr = "