First try for CAS, SymPy with codegen

語言

中文演講/中文投影片

分類

科學

Python 難易度

中階

投影片連結

https://speakerdeck.com/wdv4758h/first-try-for-cas-sympy-with-codegen

摘要

一個平常沒在做數學相關研究的工程師,因緣際會下使用到了 SymPy。藉機來介紹 SymPy 的基本使用,從建立自己的方程式到使用 SymPy 所支援的方程式化簡,最後利用 codegen 轉換到其他程式語言或 Library,並檢視藏在這些功能背後的 AST (Abstract Syntax Tree)。

說明

前陣子碰上了 libm 相關的實作問題,於是對 libm 內部的三角函數實作方式感到好奇。在嘗試自己實作後了解到利用泰勒展開式會隨著數字增長而產生不可忽視的誤差,因此現今的各家 libm 中幾乎都是基於 [Chebyshev Approximation](https://en.wikipedia.org/wiki/Approximation_theory#Chebyshev_approximation) 所找到的多項式來趨近,於是利用了 SymPy 撰寫了一個 Chebyshev Approximation 的[實作](https://github.com/wdv4758h/chebyshev)。後續發現了 SymPy 的 codegen 功能,於是開始嘗試撰寫簡單的 [Rust](https://www.rust-lang.org/) [codegen](https://github.com/sympy/sympy/pull/10618),目前正處於 PR 改進階段,希望後續能夠完善:)

許邱翔 (Chiu-Hsiang Hsu) (dv)

社會新鮮人,去年剛畢業、當完兵,目前正在新創公司工作,我的朋友大多叫我 "dv",同事都叫我 "CH",目前活動範圍以桃園、台北居多,熱愛 Open Source :)