기타

all elementary functions from a single operator

lottopotato 2026. 4. 17. 14:59

얼마전 재밌는 논문이 하나 나왔는대 바로 수학에서 쓰이는 대부분의 기초 함수를 하나의 함수의 반복 사용으로 생성 할 수 있음을 증명 했다는 것이다.

그 함수가 바로 Exp-Minus-Log(EML) 이라는 함수로 -+*/, sin, cos, pos, exp,.. 등등의 기초 연산자를 이 함수의 사용으로 대체 할 수 있다고 한다.

뭐 너무 빠르게 읽어봐서 (수학쪽으로 뭐 잘아는것도 아니고 ㅎㅎ) 대충 봤지만 어쨋든 이미지를 보면

eml 함수와 1의 사용으로 기초 연산자를 대체 하여 사용 할 수 있다는 것이다.

그래서 실제 코드로 보면,

def exp(x):
    return np.exp(x)

def ln(x):
    return np.log(x)

def eml(x, y):
    return exp(x) - ln(y)

def exp_x(x):
    return eml(x, 1)

def ln_x(x):
    return eml(1, eml(eml(1, x), 1))

def minus_x(x):
    return eml(eml(1, eml(1, eml(1, eml(eml(1, 1), 1)))), eml(x, 1))

def inv_x(x):
    return eml(eml(eml(1, eml(1, eml(1, eml(eml(1, 1), 1)))), x), 1)

def x_times_y(x, y):
    return eml(eml(1, eml(eml(eml(1, eml(eml(1, eml(1, x)), 1)), eml(1, eml(eml(1, eml(y, 1)), 1))), 1)), 1)

def x_plus_y(x, y):
    return ln_x(
        x_times_y(
            exp_x(x), exp_x(y)
        )
    )

def sqr_x(x):
    return x_times_y(x, x)

 

이렇게 eml함수와 인자 값에 1과 같이 사용하면 같은 연산 결과가 나온다.