Remix.run Logo
adrian_b 2 hours ago

Hypergeometric functions are functions with 4 parameters.

When you have a function with many parameters it becomes rather trivial to express simpler functions with it.

You could find a lot of functions with 4 parameters that can express all elementary functions.

Finding a binary operation that can do this, like in TFA, is far more difficult, which is why it has not been done before.

A function with 4 parameters can actually express not only any elementary function, but an infinity of functions with 3 parameters, e.g. by using the 4th parameter to encode an identifier for the function that must be computed.

thaumasiotes 2 hours ago | parent [-]

> Hypergeometric functions are functions with 4 parameters.

Granted, but the claim in the abstract says:

>> computing elementary functions such as sin, cos, sqrt, and log has always required multiple distinct operations

And I don't see how this is true as to hypergeometric functions in a way that isn't shared by the approach in the paper.

> Finding a binary operation that can do this, like in TFA, is far more difficult, which is why it has not been done before.

> A function with 4 parameters can actually express not only any elementary function, but an infinity of functions with 3 parameters, e.g. by using the 4th parameter to encode an identifier for the function that must be computed.

These statements seem to be in direct conflict with each other; you can use the second parameter of a binary function to identify a unary function just as you can use the fourth parameter of a quaternary function to identify a trinary one.

adrian_b an hour ago | parent [-]

There is an essential difference between binary functions and unary functions.

With binary functions you can compose them using a very complex composition graph.

With unary functions you can compose them only linearly, so in general it is impossible to make a binary function with unary functions.

You can make binary functions from unary functions only by using at least one other binary function. For instance, you can make multiplication from squaring, but only with the help of binary addition/subtraction.

So the one function that can be used to generate the others by composition must be at least binary, in order to be able to generate functions with an arbitrary number of parameters.

This is why in mathematics there are many domains where the only required primitives are a small number of binary functions, but there is none where strictly unary functions are sufficient. (However, it may be possible to restrict the binary functions to very simple functions, e.g. making a tuple from components, for instance the CONS function of LISP I.)

thaumasiotes an hour ago | parent [-]

What are you responding to?

adrian_b an hour ago | parent [-]

I think that you may have replied before I saved my entire response, so I am not sure how much of it you had read before replying yourself.

I have replied to your last statement:

> "you can use the second parameter of a binary function to identify a unary function just as you can use the fourth parameter of a quaternary function to identify a trinary one."

As I have explained above, what you propose does not work. It works in functions with 3 or more parameters, but it does not work in binary functions, because you cannot make binary functions from unary functions (without using some auxiliary binary functions).

thaumasiotes 8 minutes ago | parent [-]

> As I have explained above, what you propose does not work. It works in functions with 3 or more parameters, but it does not work in binary functions, because you cannot make binary functions from unary functions (without using some auxiliary binary functions).

I have no idea what you're trying to say. If you can use one parameter to identify a desired function, then obviously you can use a function of arity n+1 to define as many functions of arity n as you want, and it doesn't matter what the value of n is.

For example:

selector(3, "sin") = sin 3

selector(3, "log2") = log₂ 3

This works going from arity 4 to arity 3, and it also works going from arity 2 to arity 1. Your "response" talks about going from arity 1 to arity 2, a non sequitur.