 View Question
Q: how do I define multiplication of real numbers in terms of addition? ( No Answer,   3 Comments ) Question
 Subject: how do I define multiplication of real numbers in terms of addition? Category: Science > Math Asked by: mxnmatch-ga List Price: \$10.00 Posted: 04 Jul 2006 21:24 PDT Expires: 08 Jul 2006 16:04 PDT Question ID: 743424
 ```This is a continuation of my question at: http://answers.google.com/answers/threadview?id=743129 I tried going through: http://ioannis.virtualcomposer2000.com/math/exponents4.html But I got lost in the 3rd section. From the summary at the end it looks to me like I can define my method g the same way as before except that I add a special case when 0 < y < 1. For instance, g(1,2,4.5) = 2 + 2 + 2 + 2 + g(1,2,0.5) I just need to know how to define that last part in terms of addition. I'm betting that if I do that then it'll work all the way up. It looks like it involves limits on some sort of sequence, but I can't figure out what it should be.``` Request for Question Clarification by eiffel-ga on 05 Jul 2006 07:03 PDT ```Hi mxnmatch-ga, The way to define multiplication of real numbers in terms of addition is by using logarithms. To be specific: x * y = e^(ln x + ln y) But this doesn't serve your needs, does it? It brings exponentiation into the picture. Although you can obtain the value of "ln x" by finding the limit of a sequence, the terms of that sequence involve division. If you're working in a decimal representation, and don't need to worry about numbers with infinitely-long decimal representations, you can work recursively, one digit at a time. In that case, g(1,x,y) = g(1,x,10*y)/10 when 0 < y < 1 Multiplying y by 10 brings it into the range 1..10 and your main formula can again be applied. If there is still an amount 'leftover' (less than 1), it will again be multiplied by 10. Eventually, you run out of decimal digits for y, then the recursion collapses and you have your answer. This technique involves multiplication and division - but only by 10, and that's because we are working in base 10 decimal numbers. If you wanted to work with a binary representation, you could alternatively write: g(1,x,y) = g(1,x,2*y)/2 when 0 < y < 1 I'm posting this as a request for clarification rather than as an answer, because I don't think there is an answer to your question as asked, and you may wish to revise your question. I can't see how you can avoid using division (or some other higher-level operation than addition) if you wish to represent real numbers between 0 and 1 using operations on integers. But I'm a researcher rather than a mathematician - perhaps someone else will have the answer you are seeking. Regards, eiffel-ga``` Clarification of Question by mxnmatch-ga on 06 Jul 2006 03:04 PDT ```Trying that did push the problem around, but I'm still not certain how to solve it. To do what you suggest (multiply y by 10 then undo that operation) I need to apply: g(a,x,y) = g(a, g(a,x,y*k), g(a+1,y*k,-1) ) where k=10. The problem there is that I don't yet know how to calculate the results for g where y is negative. Basically, if I can figure out how to calculate g(a,x,-1) then I should be all set (at least logically. Speed wise this will have serious problems, but I'll cross that bridge when I get to it). Any ideas about how to calculate g(a,x,-1)? g(0,x,-1) = x + -1 g(1,x,-1) = x * -1 = 0 - x g(2,x,-1) = x ^ -1 = 1/x g(3,x,-1) = xth root of 1 (I think)``` Clarification of Question by mxnmatch-ga on 06 Jul 2006 12:58 PDT ```Ok, wait. I think I may have been incorrect in my most recent assertion. I don't think that accomplishes what I want it to. Oh well, I'll work on it.``` There is no answer at this time. ```To address the original question, along with the first clarification, the problem appears to be the stumbling block of multiplying by ten (or division). In this case, take the number you wish to multiply by ten and ADD it to itself 9 more times. eg: 0.5*10 = 0.5+0.5+0.5+... Now you have avoided the decimal problem. You can construct a similar operation for division. Example: (2.5)*(3.5) = (25/10)*(35/10) = 25*35/100 = 25*35*(.01) So we can write 25*35*.01 in terms of adding 25*35, 0.01's together. Its easy now. I instructed someone to write this code for a general case and it does indeed work only using + operations. Your example: 2*4.5 = 20*45*.01 = (0.1+0.1+0.1+0.1+(roughly 20*45 more additions). I fear that with large answers there may be numerical error. Can you devise a different method to overcome these problems?```
 ```That will work for multiplication, but I wanted this in a general way. In my clarification I proposed: g(a,x,y) = g(a, g(a,x,y*k), g(a+1,y*k,-1) ) For a=2 (exponentiation) and k=10 we get: g(2,x,y) = g(2, g(2,x,y*10), g(3,y*10,-1) ) = root(x^(y*10), y*10) (where root(m,n) is the nth root of m) For a=1 (multiplication) and k=10 we get: g(1,x,y) = g(1, g(1,x,y*10), g(2,y*10,-1) ) = x*y*10 / y*10 For a=0 (addition) and k=10 we get: g(0,x,y) = g(0, g(0,x,y*10), g(1,y*10,-1) ) = x + y*10 - y*10 In other words, we multiply y by 10 and then use it as y and then undo undo the multiplication by 10 in such a way that it works, not just for multiplication, but for any operation g(a,x,y). That's pretty much what you described, but I don't know how to do g(a,x,-1) for any operation where a > 3.```
 ```In a specific context one can prove that multiplication cannot be defined in terms of addition. The context is that of the natural numbers and "first-order predicate logic" in which the only quantification allowed is over the natural numbers. For a reference see Enderton, "A Mathematical Introduction to Logic", Corollary 32G which follows from the theorem that a set of natural numbers is definable in terms of 0, successor operation, <, and + iff it is eventually periodic. This does not settle whether one can define * using higher-order quantification and/or over the real numbers instead of just the natural numbers.``` 