logoalt Hacker News

derriztoday at 6:08 AM3 repliesview on HN

When I first read the exp-minus-log paper, I found it extremely surprising - even shocking that such a function could exist.

But the fact that a single function can represent a large number of other functions isn't that surprising at all.

It's probably obvious to anyone (it wasn't initially to me), but given enough arguments I can represent any arbitrary set of n+1 functions (they don't even have to be functions on the reals - just as long as the domain has a multiplicative zero available) as a sort of "selector":

g(x_0, c_0, x_1, c_1, ... , x_n, c_n) = c_0 * f_0(x_0) + ... + c_n * f_n(x_n)

The trick is to minimize the number of arguments and complexity of the RHS - but that there's a trivial upper-bound (in terms of number of arguments).


Replies

adrian_btoday at 8:38 AM

When you may use functions of 3 or more arguments, it becomes trivial to find a single function that can be used to express large classes of other functions.

These tricks break when you are restricted to use one binary function, like in the EML paper.

The second argument cannot be used as a selector, because you cannot make binary functions from unary functions (while from binary functions you can make functions with an arbitrary number of parameters, by composing them in a tree).

If you used an argument as a function selector in a binary function, which transforms the binary function into a family of unary functions, then you would need at least one other auxiliary binary function, to be able to make functions with more than one parameter.

The auxiliary binary function could be something like addition or subtraction, or at the minimum a function that makes a tuple from its arguments, like the function CONS of LISP I.

The EML paper can also be understood that the elementary functions as defined by it can be expressed using a small family of unary functions (exponential, logarithmic and negation), together with one binary function: addition.

Then this set of 4 simple functions is reduced to one complex function, which can regenerate any of those 4 functions by composition with itself.

This is the same trick used to reduce the set of 2 simple functions, AND & NOT, which are sufficient to write any logical function, to a single function, NAND, which can generate both simpler functions.

kqrtoday at 6:39 AM

This is similar to the idea of generating functions, if you would like more to read!

show 1 reply
cyberaxtoday at 6:51 AM

Why would it be surprising?

And if you want something truly surprising, Riemann's zeta function can approximate any holomorphic function arbitrarily well on the critical strip. So technically you need only _one_ argument.

show 1 reply