digitalmars.D.announce - exponential errors
- anonymouse (96/96) May 07 2023 I'm not the sharpest tool in the shed so I would really
- anonymouse (3/3) May 07 2023 On Monday, 8 May 2023 at 03:22:02 UTC, anonymouse wrote:
- NonNull (6/21) May 07 2023 Using DMD64 D Compiler v2.103.0:
- anonymouse (14/37) May 07 2023 Fare enough regarding integer division, I used 1/2 in python when
- anonymouse (3/8) May 07 2023 Removed and install v2.103.1, but experiencing the exact same
- anonymouse (3/7) May 07 2023 This is a macOS issue. Don't know if it's specific to Ventura but
- Dennis (7/9) May 08 2023 Indeed. Apparently Apple changed their floating point parsing
- anonymouse (5/7) May 08 2023 Confirmed. installed 2.104.0-beta.1 and everything's now back to
I'm not the sharpest tool in the shed so I would really
appreciate some assistance clarifying what's going on here and
how to accomplish this seemingly simple (to me) goal.
I'd like to raise a floating point value ```d``` to some exponent
```n```.
Never thought I'd have to do this but, in Python:
```Python
pow(1/2, 3)
```
output:
```
0.125
```
in D:
```D
import std.stdio;
void main()
{
writeln((1/2)^^3);
}
```
Compile Time Error:
```
hist.d(40): Error: undefined identifier `pow` in module `std.math`
```
Say what? I don't remember ever calling `import std.math : pow`.
Why am I getting this error?
Okay, whatever, just import the damn thing
```D
import std.stdio;
void main()
{
writeln((1/2)^^3);
import std.math.exponential: pow; // placement intentional,
ran into this error
// by accident while trying
to understand the
// error above and the one
to come next at the
// same time
}
```
Compile Time Error:
```
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/mat
/exponential.d(47): Error: version `InlineAsm_X86_Any` defined after use
```
Come again? Okay, good to know I guess. Let's get it right this
time.
```D
import std.stdio;
void main()
{
import std.math.exponential: pow;
writeln((1/2)^^3);
// I was actually trying to use pow() here directly
// which produced the same errors as below when I ran into the
// previous error
}
```
Compile Time Error:
```
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3791): Error: number `0x0.8p-126f` is not representable as a
`float`
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3791): https://dlang.org/spec/lex.html#floatliteral
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3791): Error: number `0x0.8p-126f` is not representable as a
`float`
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3791): https://dlang.org/spec/lex.html#floatliteral
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3793): Error: number `0x0.555556p-126f` is not representable as a
`float`
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3793): https://dlang.org/spec/lex.html#floatliteral
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3793): Error: number `0x0.555556p-126f` is not representable as a
`float`
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3793): https://dlang.org/spec/lex.html#floatliteral
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3804): Error: number `0x0.8p-1022` is not representable as a
`double`
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3804): `real` literals can be written using the `L` suffix.
https://dlang.org/spec/lex.html#floatliteral
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3804): Error: number `0x0.8p-1022` is not representable as a
`double`
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3804): `real` literals can be written using the `L` suffix.
https://dlang.org/spec/lex.html#floatliteral
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3806): Error: number `0x0.5555555555555p-1022` is not
representable as a `double`
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3806): `real` literals can be written using the `L` suffix.
https://dlang.org/spec/lex.html#floatliteral
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3806): Error: number `0x0.5555555555555p-1022` is not
representable as a `double`
/Users/confuzzled/dlang/dmd-2.103.0/osx/bin/../../src/phobos/std/math/
xponential.d(3806): `real` literals can be written using the `L` suffix.
https://dlang.org/spec/lex.html#floatliteral
```
I'm sorry, what am I missing? How do I accomplish this task?
-- anonymouse
May 07 2023
On Monday, 8 May 2023 at 03:22:02 UTC, anonymouse wrote: Sorry, I thought I was already in the Learn forum. Please move there if possible.
May 07 2023
On Monday, 8 May 2023 at 03:22:02 UTC, anonymouse wrote:
Never thought I'd have to do this but, in Python:
```Python
pow(1/2, 3)
```
output:
```
0.125
```
in D:
```D
import std.stdio;
void main()
{
writeln((1/2)^^3);
}
Using DMD64 D Compiler v2.103.0:
The above program ran and output ```0``` because ```1/2``` is
zero in D as that's integer division. Putting 1.0 instead of 1,
it output ```0.125```.
Your compiler version is?
May 07 2023
On Monday, 8 May 2023 at 04:13:11 UTC, NonNull wrote:On Monday, 8 May 2023 at 03:22:02 UTC, anonymouse wrote:Fare enough regarding integer division, I used 1/2 in python when I switch to check my sanity and carried it forward when I came back to D but the results were the exact same. Errors vice the outputs you posted above. The actual code that triggered this was ```D double d = 0.5; int n = 3; writeln(d ^^ n); ``` As for the version of D I'm using, according to ```dmd --version``` it is none other than DMD64 D Compiler v2.103.0 Not sure if it makes a difference but I'm using MacOS Ventura.Never thought I'd have to do this but, in Python: ```Python pow(1/2, 3) ``` output: ``` 0.125 ``` in D: ```D import std.stdio; void main() { writeln((1/2)^^3); }Using DMD64 D Compiler v2.103.0: The above program ran and output ```0``` because ```1/2``` is zero in D as that's integer division. Putting 1.0 instead of 1, it output ```0.125```. Your compiler version is?
May 07 2023
On Monday, 8 May 2023 at 04:31:37 UTC, anonymouse wrote:``` As for the version of D I'm using, according to ```dmd --version``` it is none other than DMD64 D Compiler v2.103.0 Not sure if it makes a difference but I'm using MacOS Ventura.Removed and install v2.103.1, but experiencing the exact same issues.
May 07 2023
On Monday, 8 May 2023 at 04:31:37 UTC, anonymouse wrote:As for the version of D I'm using, according to ```dmd --version``` it is none other than DMD64 D Compiler v2.103.0 Not sure if it makes a difference but I'm using MacOS Ventura.This is a macOS issue. Don't know if it's specific to Ventura but I just loaded up a Debian VM and it runs as expected.
May 07 2023
On Monday, 8 May 2023 at 05:01:44 UTC, anonymouse wrote:This is a macOS issue. Don't know if it's specific to Ventura but I just loaded up a Debian VM and it runs as expected.Indeed. Apparently Apple changed their floating point parsing function in their C runtime library, causing dmd to fail to parse certain floating pointing numbers in std.math. See issue https://issues.dlang.org/show_bug.cgi?id=23846. It has been fixed, but you'll need to update to 2.104.0 which is currently in beta.
May 08 2023
On Monday, 8 May 2023 at 10:24:53 UTC, Dennis wrote:It has been fixed, but you'll need to update to 2.104.0 which is currently in beta.Confirmed. installed 2.104.0-beta.1 and everything's now back to normal. Thank you. -- anonymouse
May 08 2023









anonymouse <anony mouse.com> 