使用 plplot 时使用 Ada real_arrays 运算符
Using Ada real_arrays operators while using plplot
Ada 中的 Plplot 需要一个使用 ada.numerics.real_arrays 的文件,并阻止在其他任何地方使用它。同时,矢量运算因此被隐藏,因此显然每个 plplot 示例 ada 都使用元素运算,首先违背了专门线性代数类型的目的。
我只是做错了什么,还是 plplot 的真正限制?
举个例子:
with ada.text_io; use ada.text_io; -- 'use' allows using library functions without fuilly qualified names
with ada.float_text_io; use ada.float_text_io;
--with ada.numerics.real_arrays; use ada.numerics.real_arrays;
with
PLplot_Auxiliary,
PLplot;
use
PLplot_Auxiliary,
PLplot;
procedure Simple is
procedure Put (X : Real_Vector) is -- vector version of above, 1D instead of 2D
type Fixed is delta 0.01 range -100.0..100.0;
begin
for I in X'Range (1) loop
Put (Fixed'Image (Fixed (X (I))));
New_Line;
end loop;
end Put;
x, y : Real_Vector(-10 .. 10);
begin
for i in x'range loop
x(i) := float(i);
y(i) := x(i)**2;
y := x+y; --This line cause compilation to fail because plplot_auxiliary does not provide "+" for Real_Vector
end loop;
put(x);
Initialize_PLplot; -- Call this only once.
Simple_Plot(x, y); -- Make the plot.
End_PLplot; -- Call this only once.
end Simple;
构建:
gnatmake -aI/usr/share/ada/adainclude/plplotadad -aL/usr/lib64/ada/adalib/plplotadad simple.adb \
-cargs `PKG_CONFIG_PATH="/usr/lib64/pkgconfig:%{_PKG_CONFIG_PATH}:/usr/lib64/pkgconfig:/usr/share/pkgconfig" pkg-config --cflags plplotd-ada` -largs `PKG_CONFIG_PATH="/usr/lib64/pkgconfig:%{_PKG_CONFIG_PATH}:/usr/lib64/pkgconfig:/usr/share/pkgconfig" pkg-config --libs plplotd-ada`
gcc -c -I/usr/share/ada/adainclude/plplotadad -I/usr/include/plplot simple.adb
gnatbind -aI/usr/share/ada/adainclude/plplotadad -aO/usr/lib64/ada/adalib/plplotadad -x simple.ali
gnatlink simple.ali -lplplotadad -lplplotd
查看 libplplot-ada1-dev
软件包在 Debian/Jessie 中提供的源文件,似乎可以在 Ada 95 版本或 Ada 2005 版本中提供软件包 PLPlot_Auxilary
。 Ada 2005 版本使用 Ada 数值包,而 Ada 95 版本没有。
Ada 中的 Plplot 需要一个使用 ada.numerics.real_arrays 的文件,并阻止在其他任何地方使用它。同时,矢量运算因此被隐藏,因此显然每个 plplot 示例 ada 都使用元素运算,首先违背了专门线性代数类型的目的。
我只是做错了什么,还是 plplot 的真正限制?
举个例子:
with ada.text_io; use ada.text_io; -- 'use' allows using library functions without fuilly qualified names
with ada.float_text_io; use ada.float_text_io;
--with ada.numerics.real_arrays; use ada.numerics.real_arrays;
with
PLplot_Auxiliary,
PLplot;
use
PLplot_Auxiliary,
PLplot;
procedure Simple is
procedure Put (X : Real_Vector) is -- vector version of above, 1D instead of 2D
type Fixed is delta 0.01 range -100.0..100.0;
begin
for I in X'Range (1) loop
Put (Fixed'Image (Fixed (X (I))));
New_Line;
end loop;
end Put;
x, y : Real_Vector(-10 .. 10);
begin
for i in x'range loop
x(i) := float(i);
y(i) := x(i)**2;
y := x+y; --This line cause compilation to fail because plplot_auxiliary does not provide "+" for Real_Vector
end loop;
put(x);
Initialize_PLplot; -- Call this only once.
Simple_Plot(x, y); -- Make the plot.
End_PLplot; -- Call this only once.
end Simple;
构建:
gnatmake -aI/usr/share/ada/adainclude/plplotadad -aL/usr/lib64/ada/adalib/plplotadad simple.adb \
-cargs `PKG_CONFIG_PATH="/usr/lib64/pkgconfig:%{_PKG_CONFIG_PATH}:/usr/lib64/pkgconfig:/usr/share/pkgconfig" pkg-config --cflags plplotd-ada` -largs `PKG_CONFIG_PATH="/usr/lib64/pkgconfig:%{_PKG_CONFIG_PATH}:/usr/lib64/pkgconfig:/usr/share/pkgconfig" pkg-config --libs plplotd-ada`
gcc -c -I/usr/share/ada/adainclude/plplotadad -I/usr/include/plplot simple.adb
gnatbind -aI/usr/share/ada/adainclude/plplotadad -aO/usr/lib64/ada/adalib/plplotadad -x simple.ali
gnatlink simple.ali -lplplotadad -lplplotd
查看 libplplot-ada1-dev
软件包在 Debian/Jessie 中提供的源文件,似乎可以在 Ada 95 版本或 Ada 2005 版本中提供软件包 PLPlot_Auxilary
。 Ada 2005 版本使用 Ada 数值包,而 Ada 95 版本没有。