Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2011-10

What about complex numbers?

9 messages · 6 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Carlos Avila

Hello
Is complex number arithmetic possible in FPC? Another post recommends use unit so named ucomplex, but i can't find any detailed information of this in the documentation. But, amazingly, i sucessfully probed this small program:

PROGRAM DUMMY;
USES UCOMPLEX;
VAR
x,y, z, w: COMPLEX;
BEGIN
x := 8+i*7;
y := 4-5*i;
z := x+y;
w := x*y
END.

This program compile and run right, but why? I need to know about anything subroutines that works with complex numbers. It is posibble to write math operations like FORTRAN?

Thanks

Jeppe Græsdal Johansen
to Carlos Avila
Carlos Avila wrote 27 lines
Hello Is complex number arithmetic possible in FPC? Another post recommends use unit so named ucomplex, but i can't find any detailed information of this in the documentation. But, amazingly, i sucessfully probed this small program: PROGRAM DUMMY; USES UCOMPLEX; VAR x,y, z, w: COMPLEX; BEGIN x := 8+i*7; y := 4-5*i; z := x+y; w := x*y END. This program compile and run right, but why? I need to know about anything subroutines that works with complex numbers. It is posibble to write math operations like FORTRAN? Thanks

The unit ucomplex is part of the rtl. It uses simple operator overloading to add a pretty useful complex type into your program. You can use it(pretty much) as any other type. It's not any special type, it's just a record where all the operators got overloaded

Try to open the source code for that unit, and you'll see how beautifully simple it is :)

Thomas Young
to Jeppe Græsdal Johansen

Hi,

I'm trying to read and write ascii characters using FPC. I had no problems doing this years ago with Think Pascal & Code Warrior.

For some reason I'm not able to read and write ascii characters above ascii 127 with FPC. Can someone explain this to me?

Thanks in advance!

Using this code:
	for i:= 33 to 226 do
		writeln('Character: ', chr(i), '   Ascii value: ', i:1);

Character: ! Ascii value: 33
Character: " Ascii value: 34
Character: # Ascii value: 35
Character: $ Ascii value: 36
Character: % Ascii value: 37
Character: & Ascii value: 38
Character: ' Ascii value: 39
Character: ( Ascii value: 40
Character: ) Ascii value: 41
Character: * Ascii value: 42
Character: + Ascii value: 43
Character: , Ascii value: 44
Character: - Ascii value: 45
Character: . Ascii value: 46
Character: / Ascii value: 47
Character: 0 Ascii value: 48
Character: 1 Ascii value: 49
Character: 2 Ascii value: 50
Character: 3 Ascii value: 51
Character: 4 Ascii value: 52
Character: 5 Ascii value: 53
Character: 6 Ascii value: 54
Character: 7 Ascii value: 55
Character: 8 Ascii value: 56
Character: 9 Ascii value: 57
Character: : Ascii value: 58
Character: ; Ascii value: 59
Character: < Ascii value: 60
Character: = Ascii value: 61
Character: > Ascii value: 62
Character: ? Ascii value: 63
Character: @ Ascii value: 64
Character: A Ascii value: 65
Character: B Ascii value: 66
Character: C Ascii value: 67
Character: D Ascii value: 68
Character: E Ascii value: 69
Character: F Ascii value: 70
Character: G Ascii value: 71
Character: H Ascii value: 72
Character: I Ascii value: 73
Character: J Ascii value: 74
Character: K Ascii value: 75
Character: L Ascii value: 76
Character: M Ascii value: 77
Character: N Ascii value: 78
Character: O Ascii value: 79
Character: P Ascii value: 80
Character: Q Ascii value: 81
Character: R Ascii value: 82
Character: S Ascii value: 83
Character: T Ascii value: 84
Character: U Ascii value: 85
Character: V Ascii value: 86
Character: W Ascii value: 87
Character: X Ascii value: 88
Character: Y Ascii value: 89
Character: Z Ascii value: 90
Character: [ Ascii value: 91
Character: \ Ascii value: 92
Character: ] Ascii value: 93
Character: ^ Ascii value: 94
Character: _ Ascii value: 95
Character: ` Ascii value: 96
Character: a Ascii value: 97
Character: b Ascii value: 98
Character: c Ascii value: 99
Character: d Ascii value: 100
Character: e Ascii value: 101
Character: f Ascii value: 102
Character: g Ascii value: 103
Character: h Ascii value: 104
Character: i Ascii value: 105
Character: j Ascii value: 106
Character: k Ascii value: 107
Character: l Ascii value: 108
Character: m Ascii value: 109
Character: n Ascii value: 110
Character: o Ascii value: 111
Character: p Ascii value: 112
Character: q Ascii value: 113
Character: r Ascii value: 114
Character: s Ascii value: 115
Character: t Ascii value: 116
Character: u Ascii value: 117
Character: v Ascii value: 118
Character: w Ascii value: 119
Character: x Ascii value: 120
Character: y Ascii value: 121
Character: z Ascii value: 122
Character: { Ascii value: 123
Character: | Ascii value: 124
Character: } Ascii value: 125
Character: ~ Ascii value: 126
Character: Ascii value: 127
Character: ? Ascii value: 128
Character: ? Ascii value: 129
Character: ? Ascii value: 130
Character: ? Ascii value: 131
Character: ? Ascii value: 132
Character: ? Ascii value: 133
Character: ? Ascii value: 134
Character: ? Ascii value: 135
Character: ? Ascii value: 136
Character: ? Ascii value: 137

truncated for brevity.

Thomas Young
mobile email:

Thomas Young
to Jeppe Græsdal Johansen: The unit ucomplex is part of the rtl. It uses simple operator overloading to add a pretty…

Hi,

I'm trying to read and write ascii characters using FPC. I had no problems doing this years ago with Think Pascal & Code Warrior.

For some reason I'm not able to read and write ascii characters above ascii 127 with FPC. Can someone explain this to me?

Thanks in advance!

Using this code:
	for i:= 33 to 226 do
		writeln('Character: ', chr(i), '   Ascii value: ', i:1);

Character: ! Ascii value: 33
Character: " Ascii value: 34
Character: # Ascii value: 35
Character: $ Ascii value: 36
Character: % Ascii value: 37
Character: & Ascii value: 38
Character: ' Ascii value: 39
Character: ( Ascii value: 40
Character: ) Ascii value: 41
Character: * Ascii value: 42
Character: + Ascii value: 43
Character: , Ascii value: 44
Character: - Ascii value: 45
Character: . Ascii value: 46
Character: / Ascii value: 47
Character: 0 Ascii value: 48
Character: 1 Ascii value: 49
Character: 2 Ascii value: 50
Character: 3 Ascii value: 51
Character: 4 Ascii value: 52
Character: 5 Ascii value: 53
Character: 6 Ascii value: 54
Character: 7 Ascii value: 55
Character: 8 Ascii value: 56
Character: 9 Ascii value: 57
Character: : Ascii value: 58
Character: ; Ascii value: 59
Character: < Ascii value: 60
Character: = Ascii value: 61
Character: > Ascii value: 62
Character: ? Ascii value: 63
Character: @ Ascii value: 64
Character: A Ascii value: 65
Character: B Ascii value: 66
Character: C Ascii value: 67
Character: D Ascii value: 68
Character: E Ascii value: 69
Character: F Ascii value: 70
Character: G Ascii value: 71
Character: H Ascii value: 72
Character: I Ascii value: 73
Character: J Ascii value: 74
Character: K Ascii value: 75
Character: L Ascii value: 76
Character: M Ascii value: 77
Character: N Ascii value: 78
Character: O Ascii value: 79
Character: P Ascii value: 80
Character: Q Ascii value: 81
Character: R Ascii value: 82
Character: S Ascii value: 83
Character: T Ascii value: 84
Character: U Ascii value: 85
Character: V Ascii value: 86
Character: W Ascii value: 87
Character: X Ascii value: 88
Character: Y Ascii value: 89
Character: Z Ascii value: 90
Character: [ Ascii value: 91
Character: \ Ascii value: 92
Character: ] Ascii value: 93
Character: ^ Ascii value: 94
Character: _ Ascii value: 95
Character: ` Ascii value: 96
Character: a Ascii value: 97
Character: b Ascii value: 98
Character: c Ascii value: 99
Character: d Ascii value: 100
Character: e Ascii value: 101
Character: f Ascii value: 102
Character: g Ascii value: 103
Character: h Ascii value: 104
Character: i Ascii value: 105
Character: j Ascii value: 106
Character: k Ascii value: 107
Character: l Ascii value: 108
Character: m Ascii value: 109
Character: n Ascii value: 110
Character: o Ascii value: 111
Character: p Ascii value: 112
Character: q Ascii value: 113
Character: r Ascii value: 114
Character: s Ascii value: 115
Character: t Ascii value: 116
Character: u Ascii value: 117
Character: v Ascii value: 118
Character: w Ascii value: 119
Character: x Ascii value: 120
Character: y Ascii value: 121
Character: z Ascii value: 122
Character: { Ascii value: 123
Character: | Ascii value: 124
Character: } Ascii value: 125
Character: ~ Ascii value: 126
Character: Ascii value: 127
Character: ? Ascii value: 128
Character: ? Ascii value: 129
Character: ? Ascii value: 130
Character: ? Ascii value: 131
Character: ? Ascii value: 132
Character: ? Ascii value: 133
Character: ? Ascii value: 134
Character: ? Ascii value: 135
Character: ? Ascii value: 136
Character: ? Ascii value: 137

truncated for brevity.

Thomas Young
mobile email:

David Emerson
to Thomas Young: I'm trying to read and write ascii characters using FPC. I had no problems doing this…
Thomas Young wrote 9 lines
Hi, I'm trying to read and write ascii characters using FPC. I had no problems doing this years ago with Think Pascal & Code Warrior. For some reason I'm not able to read and write ascii characters above ascii 127 with FPC. Can someone explain this to me? Thanks in advance!

The world has changed, and globalization has reached your computer. Your computer is almost definitely using a different character set today than it was back in those days long ago. read this:
http://www.joelonsoftware.com/articles/Unicode.html The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

~D.

Show quoted text 117 lines
Using this code: for i:= 33 to 226 do writeln('Character: ', chr(i), ' Ascii value: ', i:1); Character: ! Ascii value: 33 Character: " Ascii value: 34 Character: # Ascii value: 35 Character: $ Ascii value: 36 Character: % Ascii value: 37 Character: & Ascii value: 38 Character: ' Ascii value: 39 Character: ( Ascii value: 40 Character: ) Ascii value: 41 Character: * Ascii value: 42 Character: + Ascii value: 43 Character: , Ascii value: 44 Character: - Ascii value: 45 Character: . Ascii value: 46 Character: / Ascii value: 47 Character: 0 Ascii value: 48 Character: 1 Ascii value: 49 Character: 2 Ascii value: 50 Character: 3 Ascii value: 51 Character: 4 Ascii value: 52 Character: 5 Ascii value: 53 Character: 6 Ascii value: 54 Character: 7 Ascii value: 55 Character: 8 Ascii value: 56 Character: 9 Ascii value: 57 Character: : Ascii value: 58 Character: ; Ascii value: 59 Character: < Ascii value: 60 Character: = Ascii value: 61 Character: > Ascii value: 62 Character: ? Ascii value: 63 Character: @ Ascii value: 64 Character: A Ascii value: 65 Character: B Ascii value: 66 Character: C Ascii value: 67 Character: D Ascii value: 68 Character: E Ascii value: 69 Character: F Ascii value: 70 Character: G Ascii value: 71 Character: H Ascii value: 72 Character: I Ascii value: 73 Character: J Ascii value: 74 Character: K Ascii value: 75 Character: L Ascii value: 76 Character: M Ascii value: 77 Character: N Ascii value: 78 Character: O Ascii value: 79 Character: P Ascii value: 80 Character: Q Ascii value: 81 Character: R Ascii value: 82 Character: S Ascii value: 83 Character: T Ascii value: 84 Character: U Ascii value: 85 Character: V Ascii value: 86 Character: W Ascii value: 87 Character: X Ascii value: 88 Character: Y Ascii value: 89 Character: Z Ascii value: 90 Character: [ Ascii value: 91 Character: \ Ascii value: 92 Character: ] Ascii value: 93 Character: ^ Ascii value: 94 Character: _ Ascii value: 95 Character: ` Ascii value: 96 Character: a Ascii value: 97 Character: b Ascii value: 98 Character: c Ascii value: 99 Character: d Ascii value: 100 Character: e Ascii value: 101 Character: f Ascii value: 102 Character: g Ascii value: 103 Character: h Ascii value: 104 Character: i Ascii value: 105 Character: j Ascii value: 106 Character: k Ascii value: 107 Character: l Ascii value: 108 Character: m Ascii value: 109 Character: n Ascii value: 110 Character: o Ascii value: 111 Character: p Ascii value: 112 Character: q Ascii value: 113 Character: r Ascii value: 114 Character: s Ascii value: 115 Character: t Ascii value: 116 Character: u Ascii value: 117 Character: v Ascii value: 118 Character: w Ascii value: 119 Character: x Ascii value: 120 Character: y Ascii value: 121 Character: z Ascii value: 122 Character: { Ascii value: 123 Character: | Ascii value: 124 Character: } Ascii value: 125 Character: ~ Ascii value: 126 Character: Ascii value: 127 Character: ? Ascii value: 128 Character: ? Ascii value: 129 Character: ? Ascii value: 130 Character: ? Ascii value: 131 Character: ? Ascii value: 132 Character: ? Ascii value: 133 Character: ? Ascii value: 134 Character: ? Ascii value: 135 Character: ? Ascii value: 136 Character: ? Ascii value: 137 truncated for brevity. Thomas Young mobile email:
Marco van de Voort
to Thomas Young: I'm trying to read and write ascii characters using FPC. I had no problems doing this…

In our previous episode, Thomas Young said:

For some reason I'm not able to read and write ascii characters above ascii 127 with FPC. Can someone explain this to me?

This is very logical, since ASCII only defines +/- 127 chars.

The upper 128 were used for vendor specific characters (aka codepages), which were later somewhat standarized in ISO norms.

So the first step is what characters you actualy expect above 127.

Thomas Young
to David Emerson: The world has changed, and globalization has reached your computer. Your computer is…

Thank you for the article. It was very helpful.

Why is it I can read and write a string that contains characters in the upper 128 but can't read & write them as individual char?

Specifically I need to read the copyright (169), trademark (170) and registration (168) characters. Any suggestions on how I can do this?

Thomas Young
cell: 330-256-7064
mobile email:

David Emerson wrote 143 lines
On Wed 5 Oct 2011, Thomas Young wrote: > Hi, > > I'm trying to read and write ascii characters using FPC. I had no problems > doing this years ago with Think Pascal & Code Warrior. > > For some reason I'm not able to read and write ascii characters above ascii > 127 with FPC. Can someone explain this to me? > > Thanks in advance! The world has changed, and globalization has reached your computer. Your computer is almost definitely using a different character set today than it was back in those days long ago. read this: http://www.joelonsoftware.com/articles/Unicode.html The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) ~D. > > Using this code: > for i:= 33 to 226 do > writeln('Character: ', chr(i), ' Ascii value: ', i:1); > > Character: ! Ascii value: 33 > Character: " Ascii value: 34 > Character: # Ascii value: 35 > Character: $ Ascii value: 36 > Character: % Ascii value: 37 > Character: & Ascii value: 38 > Character: ' Ascii value: 39 > Character: ( Ascii value: 40 > Character: ) Ascii value: 41 > Character: * Ascii value: 42 > Character: + Ascii value: 43 > Character: , Ascii value: 44 > Character: - Ascii value: 45 > Character: . Ascii value: 46 > Character: / Ascii value: 47 > Character: 0 Ascii value: 48 > Character: 1 Ascii value: 49 > Character: 2 Ascii value: 50 > Character: 3 Ascii value: 51 > Character: 4 Ascii value: 52 > Character: 5 Ascii value: 53 > Character: 6 Ascii value: 54 > Character: 7 Ascii value: 55 > Character: 8 Ascii value: 56 > Character: 9 Ascii value: 57 > Character: : Ascii value: 58 > Character: ; Ascii value: 59 > Character: < Ascii value: 60 > Character: = Ascii value: 61 > Character: > Ascii value: 62 > Character: ? Ascii value: 63 > Character: @ Ascii value: 64 > Character: A Ascii value: 65 > Character: B Ascii value: 66 > Character: C Ascii value: 67 > Character: D Ascii value: 68 > Character: E Ascii value: 69 > Character: F Ascii value: 70 > Character: G Ascii value: 71 > Character: H Ascii value: 72 > Character: I Ascii value: 73 > Character: J Ascii value: 74 > Character: K Ascii value: 75 > Character: L Ascii value: 76 > Character: M Ascii value: 77 > Character: N Ascii value: 78 > Character: O Ascii value: 79 > Character: P Ascii value: 80 > Character: Q Ascii value: 81 > Character: R Ascii value: 82 > Character: S Ascii value: 83 > Character: T Ascii value: 84 > Character: U Ascii value: 85 > Character: V Ascii value: 86 > Character: W Ascii value: 87 > Character: X Ascii value: 88 > Character: Y Ascii value: 89 > Character: Z Ascii value: 90 > Character: [ Ascii value: 91 > Character: \ Ascii value: 92 > Character: ] Ascii value: 93 > Character: ^ Ascii value: 94 > Character: _ Ascii value: 95 > Character: ` Ascii value: 96 > Character: a Ascii value: 97 > Character: b Ascii value: 98 > Character: c Ascii value: 99 > Character: d Ascii value: 100 > Character: e Ascii value: 101 > Character: f Ascii value: 102 > Character: g Ascii value: 103 > Character: h Ascii value: 104 > Character: i Ascii value: 105 > Character: j Ascii value: 106 > Character: k Ascii value: 107 > Character: l Ascii value: 108 > Character: m Ascii value: 109 > Character: n Ascii value: 110 > Character: o Ascii value: 111 > Character: p Ascii value: 112 > Character: q Ascii value: 113 > Character: r Ascii value: 114 > Character: s Ascii value: 115 > Character: t Ascii value: 116 > Character: u Ascii value: 117 > Character: v Ascii value: 118 > Character: w Ascii value: 119 > Character: x Ascii value: 120 > Character: y Ascii value: 121 > Character: z Ascii value: 122 > Character: { Ascii value: 123 > Character: | Ascii value: 124 > Character: } Ascii value: 125 > Character: ~ Ascii value: 126 > Character: Ascii value: 127 > Character: ? Ascii value: 128 > Character: ? Ascii value: 129 > Character: ? Ascii value: 130 > Character: ? Ascii value: 131 > Character: ? Ascii value: 132 > Character: ? Ascii value: 133 > Character: ? Ascii value: 134 > Character: ? Ascii value: 135 > Character: ? Ascii value: 136 > Character: ? Ascii value: 137 > > truncated for brevity. > > > Thomas Young > mobile email: > _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Tomas Hajny
to Thomas Young
Thomas Young wrote 5 lines
Thank you for the article. It was very helpful. Why is it I can read and write a string that contains characters in the upper 128 but can't read & write them as individual char?

This is most probably due to the fact that your platform uses/requires a multi-byte encoding of these characters nowadays (probably UTF-8) as opposed to the platform / version you used those 'years ago' with ThinkPascal. You need a different way for referring to the particular characters than you used in the past, or you need to translate the original meaning (based on a particular character set like Mac Roman you may have used in the past).

Specifically I need to read the copyright (169), trademark (170) and registration (168) characters. Any suggestions on how I can do this?

If you specifically need these, put those characters as constant strings in your code and use those strings. Also, make sure to specify the encoding used for your source code directly in the source code (using the respective compiler directive or the UTF-8 marker) to avoid possible wrong interpretation.

Tomas

Show quoted text 36 lines
On Oct 6, 2011, at 2:23 AM, David Emerson wrote: > On Wed 5 Oct 2011, Thomas Young wrote: >> Hi, >> >> I'm trying to read and write ascii characters using FPC. I had no >> problems >> doing this years ago with Think Pascal & Code Warrior. >> >> For some reason I'm not able to read and write ascii characters above >> ascii >> 127 with FPC. Can someone explain this to me? >> >> Thanks in advance! > > The world has changed, and globalization has reached your computer. Your > computer is almost definitely using a different character set today than > it was > back in those days long ago. read this: > http://www.joelonsoftware.com/articles/Unicode.html > The Absolute Minimum Every Software Developer Absolutely, Positively > Must Know > About Unicode and Character Sets (No Excuses!) > > ~D. > >> >> Using this code: >> for i:= 33 to 226 do >> writeln('Character: ', chr(i), ' Ascii value: ', i:1); >> >> Character: ! Ascii value: 33 >> Character: " Ascii value: 34 >> Character: # Ascii value: 35 >> Character: $ Ascii value: 36

.
.

Show quoted text 8 lines
>> Character: ~ Ascii value: 126 >> Character: Ascii value: 127 >> Character: ? Ascii value: 128 >> Character: ? Ascii value: 129 >> Character: ? Ascii value: 130 >> Character: ? Ascii value: 131 >> Character: ? Ascii value: 132 >> Character: ? Ascii value: 133
Carlos Avila
to Jeppe Græsdal Johansen: The unit ucomplex is part of the rtl. It uses simple operator overloading to add a pretty…

Thanks! I recently downloaded the rtl source code, and confirmed this

2011/10/5 Jeppe Græsdal Johansen

Show quoted text 41 lines
Den 06-10-2011 00:30, Carlos Avila skrev: Hello Is complex number arithmetic possible in FPC? Another post recommends use unit so named ucomplex, but i can't find any detailed information of this in the documentation. But, amazingly, i sucessfully probed this small program: PROGRAM DUMMY; USES UCOMPLEX; VAR x,y, z, w: COMPLEX; BEGIN x := 8+i*7; y := 4-5*i; z := x+y; w := x*y END. This program compile and run right, but why? I need to know about anything subroutines that works with complex numbers. It is posibble to write math operations like FORTRAN? Thanks The unit ucomplex is part of the rtl. It uses simple operator overloading to add a pretty useful complex type into your program. You can use it(pretty much) as any other type. It's not any special type, it's just a record where all the operators got overloaded Try to open the source code for that unit, and you'll see how beautifully simple it is :) _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal