this post was submitted on 22 Oct 2023
601 points (95.6% liked)

Programmer Humor

32739 readers
271 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 1 year ago* (last edited 1 year ago) (2 children)

to be fair it does seem to work for any two numbers where one is >1. As lim x,y--> inf ln(e^x+e^y) <= lim x,y --> inf ln(2 e^(max(x,y))) = max(x,y) + ln(2).

I think is cool because works for any number of variables

using the same proof as before we can see that: lim,x_i -->inf ln(sum_{i/in I} e^(x_i)) <= ln(|I|) +max{x_i | i /in I}.

So it would only work for at most [base of your log, so e<3 for ln] variables.

[–] [email protected] 4 points 1 year ago (1 children)

After searching a little, I found the name of the function and it's proof: https://en.wikipedia.org/wiki/LogSumExp

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago) (1 children)

thanks for looking it up:).

I do think the upper bound on that page is wrong thought. Incedentally in the article itself only the lower bound is prooven, but in its sources this paper prooves what I did in my comment before as well:

for the upper bound it has max +log(n) . (Section 2, eq 4) This lets us construct an example (see reply to your other comment) to disproove the notion about beeing able to calculate the max for many integers.

[–] [email protected] 1 points 1 year ago

I just remembered where I learned about that function, in this course on convex optimization that unfortunately I never had the opportunity to finishing it but is really good.

[–] [email protected] 2 points 1 year ago (1 children)

I don't have a mathematical proof, but doing some experimental tests on excel, using multiple (more than 3) numers and using negative numbers (including only negative numbers) it works perfectly every time.

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago)

Try (100,100,100,100,100,101) or 50 ones and a two, should result in 102 and 4 as a max respectively. I tried using less numbers, but the less numbers you use, the higher the values (to be exact less off a deviation(%-difference) between the values, resulting in higher numbers) have to be and wolframAlpha does not like 10^100 values so I stopped trying.