#!/bin/sed -f # Convert to unary s: :_:g;s:^:_:;s:$:_: s:[^0-9_*/+-]::g ta;:a;s:__:_:;ta tb;:b;s:\([0-9]\+\)\([0-9]\):\1_A_*_\2_+:;tb s:0::g;s:1:I:g;s:2:II:g;s:3:III:g;s:4:IIII:g;s:5:IIIII:g;s:6:IIIIII:g s:7:IIIIIII:g;s:8:IIIIIIII:g;s:9:IIIIIIIII:g;s:A:IIIIIIIIII:g # Calculate tc;:c s:_\(I*\)_\(I*\)_+:_\1\2: s:_\(I*\)_\1I*_-:_: s:\(I*\)_\1_-:: s:__I*_\*:_: s:_\(I*\)I_\(I*\)_\*:_\1_\2_*_\2_+: \:__/:{cDivision by zero! b} s:_\(I*\)_\1I\+_/:_: s:\(I*\)_\1_/:_\1_/_I_+: tc # Back to decimal td;:d s:_\(\(IIIIIIIIII\)\+\)\(I*\)_:_\1_\3_: s:IIIIIIIIII:I:g td te;:e s:__:_0_:;s:_I_:_1_:;s:_II_:_2_:;s:_III_:_3_:;s:_IIII_:_4_:;s:_IIIII_:_5_: s:_IIIIII_:_6_:;s:_IIIIIII_:_7_:;s:_IIIIIIII_:_8_:;s:_IIIIIIIII_:_9_: te s:_::g