Skip to content

Commit 5d622a7

Browse files
committed
wide tables
1 parent 3956dbf commit 5d622a7

3 files changed

Lines changed: 37 additions & 15 deletions

File tree

content/_includes/base.njk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ noindex: true/false
8282
.half:last-child img { width: 100%; height: auto; display: block; }
8383
}
8484
</style>
85+
86+
<link rel="stylesheet" href="/assets/style.css">
8587
<!-- To highlight code -->
8688
<link href="https://unpkg.com/prismjs@1.20.0/themes/prism-okaidia.css" rel="stylesheet"/>
8789
<!-- MathJax -->

content/assets/style.css

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/* For wide tables */
2+
3+
.table-h-scroll {
4+
overflow-x: auto;
5+
margin: 1.5rem 0;
6+
}
7+
8+
.table-h-scroll table {
9+
max-width: 1200px;
10+
width: max-content;
11+
border-collapse: collapse;
12+
}
13+
14+
.table-h-scroll th,
15+
.table-h-scroll td {
16+
white-space: normal;
17+
vertical-align: top;
18+
}

content/landscape-of-ode-solvers-in-r/index.md

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,31 @@ We intentionally exclude:
5050
Some tools included in this review go beyond ODE solving and provide additional capabilities such as parameter estimation or simulation workflows. We include them for completeness, without going into those advanced features.
5151

5252
## Overview table
53+
<div class="table-h-scroll">
5354

54-
| Package | Type | Engine | Algorithms | Model format | Stiff | DAE | DDE | Time events | Conditional events | CRAN downloads (2025) |
55+
| Package | Engine | Type | Algorithms | Model format | Stiff | DAE | DDE | Time events | Conditional events | CRAN downloads (2025) |
5556
|---------|------|---------|------------|--------------|-----------------|-----|-----|-------------|--------------------|------------------------|
56-
| [deSolve](https://cran.r-project.org/package=deSolve) | Compiled | [ODEPACK](http://www.netlib.org/odepack/); [DASPK](http://www.netlib.org/ode/) (in FORTRAN) | lsoda, lsode, radau, euler, rk4, ode23, ode45, etc. | R func (Interpreted); C / C++ / Fortran (Compiled) | Yes (via lsoda) | Yes (via daspk) | Yes (via dede) | Yes | Yes | 635628 |
57+
| [deSolve](https://cran.r-project.org/package=deSolve) | [ODEPACK](http://www.netlib.org/odepack/); [DASPK](http://www.netlib.org/ode/) (in FORTRAN) | Compiled | lsoda, lsode, radau, euler, rk4, ode23, ode45, etc. | R func (Interpreted); C / C++ / Fortran (Compiled) | Yes (via lsoda) | Yes (via daspk) | Yes (via dede) | Yes | Yes | 635628 |
5758

58-
#### Type
59+
</div>
5960

60-
- **Pure R solvers**: Numerical algorithms implemented directly in R. These are easy to inspect and flexible, but typically slower due to interpreter overhead.
61-
- **Compiled solvers**: Implemented in C/C++/Fortran or wrapping established libraries (e.g., ODEPACK). These provide significantly better performance and are the default choice for most applications.
62-
- **External runtime interfaces**: Packages that delegate computation to external ecosystems such as Julia or Python. These act as bridges rather than standalone solvers.
61+
#### Engine
6362

64-
#### Engine / Algorithms
65-
66-
- **Engine** refers to the underlying numerical implementation used by the package. This can be:
63+
This refers to the underlying numerical implementation used by the package. This can be:
6764
- a well-known external library (e.g., ODEPACK),
6865
- a custom compiled implementation,
6966
- or an external runtime (e.g., Julia),
7067
- another R package.
68+
69+
#### Type
70+
71+
- **Pure R solvers**: Numerical algorithms implemented directly in R. These are easy to inspect and flexible, but typically slower due to interpreter overhead.
72+
- **Compiled solvers**: Implemented in C/C++/Fortran or wrapping established libraries (e.g., ODEPACK). These provide significantly better performance and are the default choice for most applications.
73+
- **External runtime interfaces**: Packages that delegate computation to external ecosystems such as Julia or Python. These act as bridges rather than standalone solvers.
74+
75+
#### Algorithms
7176

72-
- **Algorithms** lists the available numerical methods (e.g., LSODA, Runge–Kutta, Radau).
73-
Some packages expose multiple algorithms, while others are limited to a specific class.
77+
This is the list of available numerical methods (e.g., LSODA, Runge–Kutta, Radau).
7478

7579
#### Model format
7680

@@ -83,9 +87,7 @@ The key distinction affecting performance is how the model is executed:
8387

8488
#### Stiff
8589

86-
Indicates whether the solver can handle **stiff systems**.
87-
88-
Stiffness arises when a system contains processes evolving on very different time scales. Solvers that support stiffness typically use implicit methods or adaptive switching (e.g., LSODA).
90+
Indicates whether the solver can handle **stiff systems**. Stiffness arises when a system contains processes evolving on very different time scales. Solvers that support stiffness typically use implicit methods or adaptive switching (e.g., LSODA).
8991

9092
#### DAE / DDE
9193

@@ -103,7 +105,7 @@ These features are important for modeling real-world systems with discontinuitie
103105

104106
#### CRAN downloads
105107

106-
Total number of downloads in 2025, reflecting usage statistics.
108+
Total number of downloads in 2025, reflecting usage statistics. Calculated with [CRAN logs](https://cranlogs.r-pkg.org/) service.
107109

108110
## Repository and test cases
109111

0 commit comments

Comments
 (0)