From b80384c71577cc089854248120c157d1d78c7e3d Mon Sep 17 00:00:00 2001 From: user1823 <92206575+user1823@users.noreply.github.com> Date: Sat, 25 Jan 2025 15:45:49 +0530 Subject: [PATCH] More accurate sorting by R (#3747) * Match calc of relative overdueness in SM2 and FSRS * Fix calculation of FSRS relative overdueness * Improve readability by avoiding double negative * Move comment line --- rslib/src/storage/card/mod.rs | 3 ++- rslib/src/storage/sqlite.rs | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/rslib/src/storage/card/mod.rs b/rslib/src/storage/card/mod.rs index 93c689292..4cc7fd626 100644 --- a/rslib/src/storage/card/mod.rs +++ b/rslib/src/storage/card/mod.rs @@ -775,7 +775,8 @@ impl fmt::Display for ReviewOrderSubclause { ReviewOrderSubclause::DifficultyDescending => "extract_fsrs_variable(data, 'd') desc", ReviewOrderSubclause::RetrievabilitySm2 { today, order } => { temp_string = format!( - "ivl / cast({today}-due+0.001 as real) {order}", + // - (elapsed days+0.001)/(scheduled interval) + "-(1 + cast({today}-due+0.001 as real)/ivl) {order}", today = today ); &temp_string diff --git a/rslib/src/storage/sqlite.rs b/rslib/src/storage/sqlite.rs index f0341f699..0775ac7b4 100644 --- a/rslib/src/storage/sqlite.rs +++ b/rslib/src/storage/sqlite.rs @@ -388,7 +388,9 @@ fn add_extract_fsrs_relative_retrievability(db: &Connection) -> rusqlite::Result .max(0.0001); Ok(Some( - -(1. / current_retrievability - 1.) / (1. / desired_retrievability - 1.), + // power should be the reciprocal of the value of DECAY in FSRS-rs, which is + // currently -0.5 + -(current_retrievability.powi(-2) - 1.) / (desired_retrievability.powi(-2) - 1.), )) }, )