introductory paragraphs below ( slightly modified)
Andrzej Odrzywołeka published March 2026 in arXiv In analogue electronics, a single op-amp with two inputs, Vin1 and Vin2, allows with appropriate feedback everything from adding, scaling, subtracting through integrating, differentiating, etc. In digital hardware a single two-input gate suffices for all of Boolean logic. Typically NAND or NOR. You can work up to half-adders, full adders, shift registers and full digital computers. No comparable primitive has been known for continuous mathematics: computing functions such as sin, cos, sqaure root and log has always required multiple distinct steps using multiple primitive operations. The EML operator has changed that, and has now been shown to be able to generate all mathematical functions.
The function is called 'EML', meaning find exp( first input) and minus (subtract) ln( second). Exp minus Ln.
You can only use this one function, which can generate outputs from -infinity via zero to +infinity, together with the single integer 1. The output of one EML unit can be fed to the inputs of other EML units.
-
The EML block has been likened to the analog op-amp ( which can be assembled to do add, subtract, function shape, differentiate, integrate....) and the NOR( or NAND) gate, which cane be assembled into structures doing any desired digital function, all the way up to a full computer.
One slight problem- you need the inputs and outputs to be in the form of complex numbers, with real and imaginary parts. In LB this means you have to write these, and we usually sreate and use them lumped into two parts of a string reprresenation. I took my existing library of such functions and added the complex ln() and exp() to the already written add, subtract etc.
At present I have two approaches. The one below gives you a set of 8 EML functions on a GUI. You set the two inputs of any that you want, then tell it to update outputs. In the screen below all start with 1, 1 as input, so give 'e' =2.71828 as output. You can then copy the value of e to another EML unit. But the intention is to add an overlay of lines linking outputs of units to other inputs. ( all eight are in the latest GUI, in smaller and neater form).
More EML examples.. exp( 1), exp( 2), exp( 3), exp( 0.5)..
The other code was intended to allow you to input an expression in EML form and use 'eval$' to evaluate it with my user-defined function. However it turns out you can only evaluate LB's built in functions... shame!