|
|
|
|
|
by kazinator
1114 days ago
|
|
It is gibberish. The expression means: (1 + (x * 2)) - (3 % x)
So the correct S-exp (let's use mod for modulo rather than %): (+ 1
(* x 2)
(- (mod 3 x)))
It's a sum of three terms, which are 1, (* x 2) and something negated (- ...),
which is (mod 3 x): remainder of 3 modulo x.The expression (% (- (+ (* x 2) 1) 3) x) corresponds to the parse ((x * 2 + 1) - 3) % x
I would simplify that before anything by folding the + 1 - 3: (x * 2 - 2) % x
Thus: (% (- (* 2 x) 2) x).
Also, in Lisps, numeric constants include the sign. This is different from C and similar languages where -2 is a unary expression which negates 2: two tokens.So you never need this: (- (+ a b) 3). You'd convert that to (+ a b -3). Trailing onstant terms in formulas written in Lisp need extra brackets around a - function call. |
|