/* Бібліотека Мавки */

// 2025-2026 Богданович Давид Когут Прихожденко (кдб.дійсність.укр)

взяти означення мавка;


простір мавка {
  простір бібліотека {
    структура Дані {
      розмір: природне;
      дані: адреса<п8>;
    }
  }
}

дія бібліотека_мавки_синус_р64(значення: р64) -> р64;
дія бібліотека_мавки_косинус_р64(значення: р64) -> р64;
дія бібліотека_мавки_тангенс_р64(значення: р64) -> р64;
дія бібліотека_мавки_арксинус_р64(значення: р64) -> р64;
дія бібліотека_мавки_арккосинус_р64(значення: р64) -> р64;
дія бібліотека_мавки_арктангенс_р64(значення: р64) -> р64;
дія бібліотека_мавки_арктангенс2_р64(а: р64, б: р64) -> р64;
дія бібліотека_мавки_абсолютне_р64(значення: р64) -> р64;
дія бібліотека_мавки_експонента_р64(значення: р64) -> р64;
дія бібліотека_мавки_корінь_р64(значення: р64) -> р64;
дія бібліотека_мавки_стеля_р64(значення: р64) -> р64;
дія бібліотека_мавки_підлога_р64(значення: р64) -> р64;
дія бібліотека_мавки_округлити_р64(значення: р64) -> р64;
дія бібліотека_мавки_видалити(розмір_шляху: природне, дані_шляху: адреса<п8>) -> логічне;
дія бібліотека_мавки_дописати_файл(розмір_шляху: природне, дані_шляху: адреса<п8>, розмір_даних: природне, дані: адреса<п8>) -> логічне;
дія бібліотека_мавки_записати_файл(розмір_шляху: природне, дані_шляху: адреса<п8>, розмір_даних: природне, дані: адреса<п8>) -> логічне;
дія бібліотека_мавки_прочитати_файл(розмір_шляху: природне, дані_шляху: адреса<п8>, вихід: адреса<мавка::бібліотека::Дані>) -> логічне;
дія бібліотека_мавки_створити_папку(розмір_шляху: природне, дані_шляху: адреса<п8>) -> логічне;

простір мавка {
  простір бібліотека {
    стала Е = 2.71828182845904523536;
    стала ЛОГ2Е = 1.44269504088896340736;
    стала ЛОГ10Е = 0.434294481903251827651;
    стала ЛОГ2 = 0.693147180559945309417;
    стала ЛОГ10 = 2.30258509299404568402;
    стала ПІ = 3.14159265358979323846;
    стала КОРІНЬ2 = 1.41421356237309504880;
    стала КОРІНЬ1_2 = 0.707106781186547524401;

    структура КористувацькіДаніБібліотекиМавки {
      взято__математика: адреса<Притриманий>; // ПредметМодуля
      взято__система: адреса<Притриманий>; // ПредметМодуля
      взято__читати: адреса<Притриманий>; // ПредметДії
    }

    дія ініціалізувати(М: адреса<Машина>);

    дія записати_дію__математика__синус(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__косинус(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__тангенс(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__арксинус(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__арккосинус(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__арктангенс(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__абсолютне(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__експонента(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__корінь(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__стеля(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__підлога(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__математика__округлити(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія ініціалізувати__математика(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);

    дія записати_дію__система__видалити(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__система__дописати(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__система__записати(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__система__прочитати(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія записати_дію__система__створити_папку(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);
    дія ініціалізувати__система(М: адреса<Машина>, предмет_модуля: адреса<ПредметМодуля>);

    дія створити_дію__читати(М: адреса<Машина>) -> адреса<ПредметДії>;
  }
}