A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0...

27
A Scientific Library for Smalltalk Serge Stinckwich 1

Transcript of A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0...

Page 1: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

A Scientific Library for Smalltalk

Serge Stinckwich

1

Page 2: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

2

Page 3: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

3

I’m nota mathematician !

Page 4: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

SciSmalltalk• Building a pure Smalltalk library

• MIT Licence

• https://github.com/SergeStinckwich/SciSmalltalk

• Last stable version 0.28

• Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12)

4

Page 5: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Competitors

5

Page 6: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Main contributors• Didier H. Besset (DHB packages)

• Nicolas Cellier (arbitrary floating point arithmetics)

• Stéphane Ducasse (Refactorings, packaging, documentation)

• Werner Kassens (KDETree)

• Serge Stinckwich (documentation, integration)

• Natalia Tymchuck (ODE)

• Hernán Morales Durand (Random Number Generator)

• Daniel Uber (first version)

6

Page 7: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

How to install ?

Also available in the Pharo Catalog

7

Page 8: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Sponsors

8

Page 9: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Metrics

• Development start in April 2012

• 632 green tests (77 classes)

• Classes (without tests): 188

9

Page 10: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

10

Page 11: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Main packages• Matrix, Statistics moments, Polynomials, Interpolations,

Integration, Series, Linear Algebra (DHB)

• Ordinary Differential Equations Solver (RK4, AB2, …)

• Complex numbers, Quaternions

• Random Number Generators

• KD-Trees

• Arbitrary Floating-point arithmetics

11

Page 12: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

12

Page 13: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Object-Oriented Implementation of Numerical Methods - An Introduction

with Smalltalk• Original Book from Didier Besset in 2000

• New book (remove all Java part of the book) in 2015

• Creative Commons Licence

• 410 pages

• Available freely now on: https://github.com/SquareBracketAssociates/NumericalMethods

• Thank you Didier !

13

Page 14: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

14

Page 15: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Brent-Salamin Algorithm

• Initial value setting:

• Repeat until the diff between an and bn is within the desired accuracy:

• pi is the approximated value of:

15

Page 16: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

16

ArbitraryPrecisionFloat>>pi | a b c k pi oldpi oldExpo expo | a := self one asArbitraryPrecisionFloatNumBits: nBits + 16. b := (a timesTwoPower: 1) sqrt reciprocal. c := a timesTwoPower: -1. k := 1. oldpi := Float pi. oldExpo := 2. [| am gm a2 | am := a + b timesTwoPower: -1. gm := (a * b) sqrt. a := am. b := gm. a2 := a squared. c inPlaceSubtract: (a2 - b squared timesTwoPower: k). pi := (a2 timesTwoPower: 1) / c. expo := (oldpi - pi) exponent. expo isZero or: [expo > oldExpo or: [expo < (-1 - nBits)]]] whileFalse: [oldpi := pi. oldExpo := expo. k := k + 1]. ^pi asArbitraryPrecisionFloatNumBits: nBits

Page 17: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Arbitrary Precision Arithmetics

y = 333.75b6 + a2(11a2b2 � b6 � 121b4 � 2) + 5.5b8 + a/(2b)

with a = 77617 and b = 33096

17

Page 18: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Demo

18

Page 19: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

19

Page 20: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Floating-point arithmetics traps

• Rump’s Example

• The exact result is −0.82739605994682135 ± 5 × 10−17

• You need to know the precision needed in order to have the good answer

• Solution: Interval arithmetics (soon in SciSmalltalk ! )

20

Page 21: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

21

Ordinary DifferentialEquations (ODE)

Page 22: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Solving ODEs

22

Page 23: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

23

Page 24: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

24

DEMO

Page 25: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

25

http://ummisco.github.io/kendrick/

Kendrick is a platform forepidemiological modeling and analysis.

Visualizations

It helps epidemiologists craft

custom analyses cheaply.

BrowsersModels

Page 26: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Lorentz Attractor demo

26

Page 27: A Scientific Library for Smalltalkesug.org/data/ESUG2015/5 friday/1100-1130... · • Pharo 3.0 (discontinued), Pharo 4.0, Pharo 5.0, Squeak 4.5 (v0.12) 4. Competitors 5. Main contributors

Roadmap• We are looking for a better name !

• Modular packaging in order to load parts of SciSmalltalk (thanks Stéphane)

• Ongoing work of Pierre Chanson (ObjectProfile) to reproduce R example in Roassal+SciSmalltalk

• We are welcoming contributions in all mathematics area (especially statistics)

27