Re:Fractran: Computer architecture based on the multiplicati...
by two_handfuls on Monday September 16, 2024 @10:12AM
(#41556267)
Some of the choices there make things harder to read.
For example, this machine takes two numbers and they are the numerator and denominator. Why on earth use ">" for the separator? That already has a mathematical meaning.
Re:Fractran: Computer architecture based on the multiplicati...
by theamk on Monday September 16, 2024 @12:59PM
(#41558083)
I assume you'd prefer to use "/" or "÷" instead?
">" is not a division, it's a rewrite operator, and in the page, it's only used with symbolic representation. I would not call "y div1 /" better than "y div1 >", it's special notation either way. And having special symbol makes it easier to understand when are we talking about regular math vs rewrite rules.
(Alternatively, if you meant "why not some other Unicode symbol": I am guessing author wants something easy to type, I can relate)
Re:Fractran: Computer architecture based on the multiplicati...
by cvoss on Monday September 16, 2024 @01:06PM
(#41558151)
Because the fraction represents a rewrite rule, which is the fundamental unit of computation in this language. Instances of the denominator factors are replaced with instances of the numerator factors.
Some people read x/y as a rewrite already (like programming language nerds). Others don't, and it makes sense to me to use a more intuitive, directed symbol to denote the action.
FWIW, `>` has not one but many meanings across programming languages.
Re:Fractran: Computer architecture based on the multiplicati...
by tromp on Monday September 16, 2024 @10:53AM
(#41556718)
This was a bit hard to read, requiring some note taking and some factorizating to check the correspondence between variable names and primes.
> You can get the product of two registers(x*y) by keeping an intermediate result and state register. Keeping the resulting product, by naming the first register for the result, prevents the accumulator grow too much in size:
:: r acc x y
:: iter acc > x iter
:: iter >
:: x y > r acc y
:: y > iter
:: x >
AC 8575 x^2 y^2
.. r^6
This one is harder to figure out. The first line reserves primes 2,3,5,7 for variables r, acc, x, y. The unreserved iter should then be assigned prime 11.
The accumulator AC starts at value 8575 = 5^2 * 7^3, so the y^2 has a typo and should be y^3. Which matches the desired end result of 2*3 = 6.
But how exactly does it get there?
:: 55/33 acc.3 iter.11 > x.5 iter.11
:: 1/11 iter.11 >
:: 42/35 x.5 y.7 > r.2 acc.3 y.7
:: 11/7 y.7 > iter.11
:: 1/5 x.5 >
AC x x y y y
02 42/35 r acc x y y y
02 42/35 r r acc acc y y y
03 11/7 r r acc acc y y iter
00 55/33 r r acc x y y iter
00 55/33 r r x x y y iter
01 1/11 r r x x y y
02 42/35 r r r acc x y y
02 42/35 r r r r acc acc y y
03 11/7 r r r r acc acc y iter
00 55/33 r r r r acc x y iter
00 55/33 r r r r x x y iter
01 1/11 r r r r x x y
02 42/35 r r r r r acc x y
02 42/35 r r r r r r acc acc y
03 11/7 r r r r r r acc acc iter
00 55/33 r r r r r r acc x iter
00 55/33 r r r r r r x x iter
01 1/11 r r r r r r x x
04 1/5 r r r r r r x
04 1/5 r r r r r r
r r r r r r
Re:Fractran: Computer architecture based on the multiplicati...
by neuroelectron on Monday September 16, 2024 @12:16PM
(#41557626)
The reason to do this would to create a quantum computer emulator. I was looking into this myself recently. I believe Iran was doing the same things but on FPGAs:
Re:Fractran: Computer architecture based on the multiplicati...
by theamk on Monday September 16, 2024 @01:23PM
(#41558320)
Why would anyone outside of quantum computer research want a quantum computer emulator? On classical machines, classical algorithms beat emulated quantum ones by a very large margin. And Iran apparently claimed "detecting surface vessels using the quantum algorithms", which makes very little sense as there are no high-performance quantum image detection algorithms known, so this is highly likely just some Iranian researchers fooling their government, and making a laughing stock of themselves in the process.
Re:Fractran: Computer architecture based on the multiplicati...
by neuroelectron on Tuesday September 17, 2024 @10:16AM
(#41567805)
I'm guessing that's a joke. The benefit of hardware support for fractions is eliminating rounding errors you get with today's machines. You can do it with libs like PyMath but ultimately you need to do build it from the ground up to completely eliminate type and class abstractions messing up the accuracy, so why not start at the hardware level so potential future chips are automatically supported? Then you can get today's performance without the overhead of legacy software.
Re:Fractran: Computer architecture based on the multiplicati...
by kragen on Tuesday September 17, 2024 @10:28AM
(#41567920)
it's not a joke. writing a program in fractran to multiply input fractions that are part of the input data is no easier than writing a program in other turing-tarpit esolangs with no built-in arithmetic support, like the λ-calculus. try it. or check out https://stackoverflow.com/questions/1749905/code-golf-fractr... which has a couple of unusably inefficient fractran interpreters in fractran
Re:Fractran: Computer architecture based on the multiplicati...
by Animats on Monday September 16, 2024 @01:45PM
(#41558573)
Rational arithmetic machines have their uses. SAT solvers tend to have one inside. That's because rational arithmetic is closed under addition, subtraction, multiplication and division.
For example, this machine takes two numbers and they are the numerator and denominator. Why on earth use ">" for the separator? That already has a mathematical meaning.
">" is not a division, it's a rewrite operator, and in the page, it's only used with symbolic representation. I would not call "y div1 /" better than "y div1 >", it's special notation either way. And having special symbol makes it easier to understand when are we talking about regular math vs rewrite rules.
(Alternatively, if you meant "why not some other Unicode symbol": I am guessing author wants something easy to type, I can relate)
Some people read x/y as a rewrite already (like programming language nerds). Others don't, and it makes sense to me to use a more intuitive, directed symbol to denote the action.
FWIW, `>` has not one but many meanings across programming languages.
> You can get the product of two registers(x*y) by keeping an intermediate result and state register. Keeping the resulting product, by naming the first register for the result, prevents the accumulator grow too much in size:
This one is harder to figure out. The first line reserves primes 2,3,5,7 for variables r, acc, x, y. The unreserved iter should then be assigned prime 11. The accumulator AC starts at value 8575 = 5^2 * 7^3, so the y^2 has a typo and should be y^3. Which matches the desired end result of 2*3 = 6. But how exactly does it get there?Btw, the corresponding FRACTRAN program would be
https://www.tomshardware.com/news/iran-quantum-computer-arm-...
Unless you divide by zero I guess
It's still used for some niche purposes.
http://lomont.org/posts/2017/fractran/