Euler 0.3.6

Euler 0.3.6

Arthur Guiot 维护。



Euler 0.3.6

  • 作者:
  • Arthur Guiot
Logo

Euler

一个用 Swift 写的数值框架

Euler 是一个包含大量有用数学函数的数学框架。它由代数、数论、统计学等大多数数学领域的函数组成。它旨在帮助您将您的计算机变成一个数学专家。

链接

安装

⚠️已知问题导致在使用 Xcode 11.4 或更高版本时构建失败。当您想在最新的 Xcode 版本中使用 Euler 时,请考虑使用 Cocoapods。

我正在与 Apple 合作解决这个问题,但如果您有解决方案,请提出拉取请求。

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 Euler 集成到您的 Xcode 项目中,请指定它位于您的 Podfile

pod 'Euler', '~> 0.3.4'

Carthage

Carthage 是一个去中心化的依赖管理器,它构建您的依赖并为您提供二进制框架。要使用 Carthage 在 Xcode 项目中集成 Euler,请将其指定在您的 Cartfile 中。

github "arguiot/Euler" ~> 0.3.4

Swift Package Manager

Swift Package Manager 是一种自动化 Swift 代码分发的工具,集成了 swift 编译器。目前处于早期开发阶段,但 Euler 在支持的平台上也支持其使用。

一旦设置好 Swift 包,将 Euler 作为依赖项添加的方法就像将其添加到 Package.swift 中的 dependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/arguiot/Euler.git", .upToNextMajor(from: "0.3.4"))
]

手动

如果您不希望使用上述任何依赖管理器,也可以手动将 Euler 集成到项目中。

嵌入框架

  • 打开终端,在顶级项目目录下 cd,如果你的项目不是作为 git 仓库初始化的话

    $ git init
  • 运行以下命令将 Euler 添加为 git 子模块

    $ git submodule add https://github.com/arguiot/Euler.git
  • 打开新的 Euler 文件夹,将 Euler.xcodeproj 拖到应用的 Xcode 项目的项目导航器中。

    它应该位于应用蓝色项目图标之下。它是在所有其他 Xcode 组的上方还是下方并不重要。

  • 在项目导航器中选中 Euler.xcodeproj 并验证部署目标与您的应用程序目标相匹配。

  • 接下来,在项目导航器(蓝色项目图标)中选中您的应用程序项目,跳转到目标配置窗口,并在侧边栏的“Targets”标题下选择应用程序目标。

  • 在该窗口的选项卡栏中,打开“General”面板。

  • 在“Embedded Binaries”部分下点击 + 按钮。

  • 你会看到两个不同的 Euler.xcodeproj 文件夹,每个文件夹内部都有两个不同版本的 Euler.framework,这些都在 Products 文件夹内部。

    选择哪个 Products 文件夹不重要,但选择顶部的还是底部的 Euler.framework 是需要考虑的。

  • 为 iOS 选择顶部的 Euler.framework,为 macOS 选择底部的。

    你可以通过检查项目的构建日志来验证你选择了哪一个。构建目标是 Euler 将会显示为 Euler iOSEuler macOSEuler tvOSEuler watchOS

  • 就这么多!

    Euler.framework 会被自动添加为项目中目标依赖项、链接框架和嵌入框架,在复制文件构建阶段,这就是你在模拟器和设备上进行构建所需要的一切。

展示

以下是一些使用 Euler 进行工作的应用列表(不全面)

Euclid

欧几里得计算器

Euclid 是一款面向 macOS 的现代且功能齐全的计算器,旨在替换默认的计算应用。Euclid 使用 Euler 进行每项计算的解析和评估。它严重依赖于代数和表格模块。

项目

灵感

该项目大部分灵感来自

为什么选择 Swift

回顾过去,Swift能够满足这个项目需求并不令人惊讶。Swift是由一个紧密合作的团队设计和构建的。该团队之前开发了一个高度模块化和可组合的编译器基础设施(LLVM),一种用于高度动态Smalltalk派生语言(Objective-C)的编译器和运行时,一种具有强大泛型系统的静态语言编译器(C++),以及一个路径敏感的静态分析引擎(Clang静态分析器)。此外,Swift的设计目标是创建一种易于学习和使用的语言,同时具有足够的实力用于系统编程。

Swift是一个完美的语言,因为它具有高性能、模块化、易于阅读的语法和并发API。Swift旨在最大限度地提高代码清晰度,因此它努力减少模板代码。Swift的最高目标是优化编写和维护项目所需的时间,这包括调试时间以及其他超越仅编写代码的事情。

目标

Euler旨在为Swift提供数值计算的构建块,作为一组细粒度模块打包的单个Swift包。Euler旨在用于探索Swift及其数学功能。它还旨在作为可以移植到其他语言的算法数据库。

组织结构

Euler围绕两个主要对象构建:`BigDouble`和`BigInt`。它们都用于以高精度表示大数字。你可以将Euler视为一个模块集

  • 数值:`BigDouble` / `BigInt` 与其他更多内容

    有助于处理数字

  • 代数:`Expression`

    帮助解析和处理数学表达式

  • 表格

    `表格`旨在开发类似Excel的软件/解析器。

  • 统计

    `统计`旨在帮助处理收集、组织和解释数值数据,特别是对人口特征的抽样推断分析。

  • 可视化与几何(`Graph`)

    使用SwiftPlot可视化任何一组点。

  • 矩阵与向量

    简单的矩阵/向量类型。⚠️它仅适用于支持`Accelerate`的Apple设备。

  • 密码学

    实现了一些基本的加密算法。我们不建议在生产环境中使用这些算法,因为它们主要用于实验目的。