LINUX.ORG.RU

Подскажите можно ли подружить Vala с long double и float128_t?

 floating point,


0

2

Думал попользовать Vala для математики а тут какието странные ограничения.

Кстати советы в плане другого аналогичного языка тоже приветствуются.

★★★★★

Последнее исправление: cvv (всего исправлений: 1)

Ответ на: комментарий от backbone

это понятно. просто не хотелось бы следить чтобы в интерфейсах не всплывал Лонг дабл.

cvv ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Можешь создать структуру

+1.
Сейчас под рукой нет компа проверить, сам с такой задачей не сталкивался, но я так понимаю будут работать мат. операторы со структурой, занаследованной от basic type (скажем, от double), в простом вапи же пропишешь транслировать в float128, см:
https://wiki.gnome.org/Projects/Vala/LegacyBindings#Simple_Types

Tayler ★★
()
Ответ на: комментарий от backbone

Не добавят. Ибо ненужно. Но спросить в мэйлинг-листе, как грамотно реализовать такую штуку не вредно.

CYB3R ★★★★★
()
Ответ на: комментарий от Tayler

Супер! Решение работает!

// test128float.vala
void main () {
	stdout.printf ("%lu\n", sizeof(MyDouble128));

	MyDouble128 d1 = 16.0;
	stdout.printf ("%f", d1 * d1);

}
public struct MyDouble128 : double {
}

// float128type.h
typedef long double double128;
$ valac --pkg=float128type --vapidir=. -C test128float.vala && cc -I. `pkg-config --cflags glib-2.0` test128float.c `pkg-config --libs glib-2.0` && ./a.out
16
256.000000
backbone ★★★★★
()
Последнее исправление: backbone (всего исправлений: 1)
Ответ на: комментарий от backbone

А вот скажи - обязательно компилить через С или можно както напрямую? Я попробовал напрямую:

valac --pkg=float128type --vapidir=. --includedir=. -v test128float.vala

Но у меня valac не предает каталог "." gcc с последующими проблемами поиска заголовка.

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Скинь все свои файлы, команды которые ты запускаешь и их вывод.

CYB3R ★★★★★
()
Ответ на: комментарий от cvv

Уже подсказали про опции valac, но вообще CMake удобен, чтобы с инсталяторами, тестами и прочим.

backbone ★★★★★
()
Ответ на: комментарий от Tayler

Помогло. Но почему не сработал --includedir=. ???

cvv ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Спросил. Сказали что нету потому что их нету в GLib в GType. Могут рассмотреть реализацию отдельным пакетом. Также посоветовали постучать в gtk-list.

cvv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.