LINUX.ORG.RU

Fractions C++. Опубликал под GPL

 , ,


0

2

Решил опублковать библиотеку под лицензией GNU GPLv3! Исходники доступны на SourceForge.net и лежат в zip архиве в папке source. На момент публкации информация на главной странице ещё не успела обновиться, не обращайте на это внимания!

Библиотека уже поддерживает:

1) Создание (определение дробей) с использованием числителя и делителя, десятичной дроби, или целого числа.

2) Округление.

3) Операторы: унарный минус, сложение, вычитание, умножение, деление, остаток от деления.

4) Логические операции: больше, меньше, равно, не равно, больше или равно, меньше или равно.

5) Возведение, быстрое возведение.

6) Корень.

7) Модуль.

8) Ввод / вывод.

9) Конвертация в double и string.

10) И другое...

Страница проекта на SourceForge.net

P.S. Буду рад предложениям по доработкам, нововведениям и просто отзывам!



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

SourceForge.net
библиотеку под GNU GPLv3

Очевидные ошибки.

anonymous
()

Хватит понтоваться, выкладывай на Github как все. И да, как сказали GPL библиотеками все стараются не пользоваться

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

SourceForge.net

мокрые мокрые писички скочять безплатно бес смс

Deleted
()

GNU GPLv3

При наличии проверенных времен альтернатив под более пермиссивными лицензиями никто, кроме разве что школоты, не будет юзать твою библиотеку.

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

А какие есть альтернативы? Гуглокод скоро прикроют, гиториус убог, разве что битбакет, но как-то он значительно уступает в удобстве гитхабу.

anonymous
()

Это единственная тсепепе-библиотека для дробей в природе? Если нет, то в чём её преимущество над остальными?

Apple-ch ★★
()
Ответ на: комментарий от anonymous

А какие есть альтернативы?

SF, как ни странно. Да, есть реклама кое-где, зато это нормальный хостинг проектов с категоризацией, ssh-доступом и прочими плюшками, а не помойка с репозиториями, в которой вперемешку лежат конфиги vim'а и сорсы ядра.

Гуглокод скоро прикроют

Откуда инфа?

гиториус убог, разве что битбакет

Такие же помойки с репозиториями

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

Откуда инфа?

Из наблюдений, что гугл закрывает многие свои сервисы. Плюс гуглопроекты нынче выкладываются на гитхаб, вместо родного гуглокода.

anonymous
()
Ответ на: комментарий от annulen

Ты так говоришь, как буто конфиги вима никому не нужны. Или как будто тебя заставляют на гитхабе глядеть в ьи-то конфиги вима. Хватит понтоваться (с)

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

Это не делает помойкой твой репозитарий. По крайней мере лучше чем некрополь

vertexua ★★★★★
()
Ответ на: комментарий от Human-source

Ну это хоть что-то. Так и до Apache/MIT/BSD дойдешь

vertexua ★★★★★
()
Ответ на: комментарий от Human-source

Creative Commons Attribution ShareAlike License V3.0

Что это такое?

7) Module: |-a| = a, |b| = b.

Что это такое?

Такие библиотеки все студенты пишут.

anonymous
()
Ответ на: комментарий от Human-source

Большее количество функций.

большее, чем в boost.rational и GMPXX? можно поимённо?

jtootf ★★★★★
()

Зачем тебе все проверки num и div в конструкторе, если

class fraction
{
public:
... 
    long long num;
    unsigned long long div;

Дальше:

fraction::fraction(long double decimal) {
    long long integer;
    double residue;

    long long mul = 1000000000000;


    if(decimal > 1) {
        integer = decimal / 1;
        residue = decimal - integer;

        num = mul * residue;
        div = mul;

        redu();

        num += integer * div;
    }
    else if(decimal == 1.0) {
        num = 1;
        div = 0;
    }
    else {
        num = mul * decimal;
        div = mul;
    }
}

Код, конечно, грамотный и классный, но как оно обработает -1000000000000.0?

Ну и делать div = 0 в среднем условии — весьма интересное решение.

unfo ★★★★★
()

Так рождалась легенда...

anonymous
()
Ответ на: комментарий от unfo

как оно обработает -1000000000000.0?

Скорее всего, выдаст максимальное значение long long. Я думаю, что с такой большой дробью никто работать не будет. Хотел ещё добавить параметр mul в функцию, чтобы пользователь сам его задавал, но решил, что это будет лишним.

fraction::fraction(long double decimal, long long mul);
Human-source
() автор топика
Ответ на: комментарий от Human-source

Ты что, упоротый? Несократимые дроби могут расти очень быстро, и твое redu() не будет помогать, и тогда все вывалится с какой-то ошибкой, а пацаны пойдут юзать буст или BigDecimal.

cdshines ★★★★★
()
Ответ на: комментарий от Human-source

Миллиарды? Попробуй умножить 2 дроби по 20 цифр в n & d каждой, которые не упрощаются.

cdshines ★★★★★
()
Ответ на: комментарий от Human-source

И да, я думаю, тебе надо эту фразу сделать теглайном своего проекта)

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

Я в курсе, как это реализовать, просто не думал, что большие числа могут пригодиться. К тому же, они не очень то быстро работают!

Human-source
() автор топика
Ответ на: комментарий от Human-source

К тому же, они не очень то быстро работают!

Лучше правильно, чем быстро. К тому же GMP практически вылизана до блеска. Сомневаюсь, что можно считать значимо быстрее.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)

А я вот читая этот тред почему-то вспомнил, как еще в школе первую свою программу в интернет выложил))

templarrr ★★★★★
()

[ fraction fra_fra() ]

Проиграл.

Придумай осмысленные названия функций, чтобы и код был читаемым, а не только документация.

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

LGPL - смягчённая версия GPL. Для тебя это наоборот, должно быть лучше! Можно использовать бесплатно в коммерческих целях, и это не единственный плюс!

Human-source
() автор топика
Ответ на: комментарий от makyrros

Если человек хочет продавать что-то, то он найдёт способ. Предположим, что кто решил разработать и продать программу, работающую с дробями. Он увидел мою библиотеку и заметил, что она под GPL (а не LGPL, как сейчас). Что он сделает? Или найдёт другую на LGPL, или реализует свою. Он не станет рарабатывать её бесплатно, если хочет её продать! Такое ощющение, что я буду людей насильно заставлять ею пользоваться =)

Human-source
() автор топика
Ответ на: комментарий от makyrros

Не думаю, что для истерик нужна библиотека для работы с дробями.

olibjerd ★★★★★
()

Юнит-тесты там есть?

Сабж.

// По ссылке не ходил.

anonymous
()
Ответ на: комментарий от alexeiz

У меня есть 2 функции для возведния в степень, реализованные через бинарный алгоритм, корень, конвертация этих дробей, строк и десятичных дробей (float, double) во всех направлниях и ещё кое-что ;)

Human-source
() автор топика

Если тебе кажется, что в известных и широко распространённых реализациях rational (e.g. boost::rational) не хватает каких-то операций - мог бы написать библиотеку, реализующую данные операции поверх уже существующей базы.

Но нет, школоте надо изобрести свой кривой и косой велосипед, никому не нужный нафиг хотя бы потому, что не поддерживает multiprecision / infinite precision целочисленные типы для числителя / знаменателя.

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