<p>$EF$ is the "easiness factor". This means that the greater easiness you have, the longer will be the interval to next review ($I_\text{new}$).</p>

<p>So if you will use the old $EF$, the new interval value will not take into account your last review quality, which makes less sense IMO.</p>

<p>For the other hand, as I can see in the <a href="https://www.supermemo.com/english/ol/sm2source.htm" rel="nofollow noreferrer">original implementation of algorithm</a>, they calculate the interval first and then they calculate the easiness:</p>

<pre><code>procedure Repetition(ElementNo,Grade:longint;var NextInterval:longint;commit:WordBool);
  var DataRecord:TDataRecord;
  begin
    DataRecord:=GetDataRecord(ElementNo);

    with DataRecord do
    begin
      if Grade&gt;=3 then
      begin
        if Repetition=0 then
        begin
          Interval:=1;
          Repetition:=1;
        end
        else if Repetition=1 then
        begin
          Interval:=6;
          Repetition:=2;
        end
        else begin
          Interval:=round(Interval*EF);
          Repetition:=Repetition+1;
        end;
      end
      else begin
        Repetition:=0;
        Interval:=1;
      end;

      EF:=EF+(0.1-(5-Grade)*(0.08+(5-Grade)*0.02));

      if EF&lt;1.3 then
        EF:=1.3;
        NextInterval:=Interval;
      end;

      if commit then
        SetDataRecord(ElementNo,DataRecord);
      end;
</code></pre>

<p>The same is in the <a href="https://www.supermemo.com/english/ol/sm2.htm" rel="nofollow noreferrer">specification</a>: they calculate next interval at step 3 and $EF$ is calculated at step 5.</p>

<p>I'd like to understand what all these magic coefficients mean and how they were found, but unfortunately didn't find this information. </p>

CC BY-SA 3.0
2017-09-05T07:51:15.120Z
2017-09-05T07:51:15.120Z
Roman Klimenko
<p>I'm confused about the exact specification of the SuperMemo2 algorithm for spaced repetition learning, as explained <a href="https://www.supermemo.com/english/ol/sm2.htm" rel="nofollow noreferrer">here</a>. After each repetition, the E-Factor has to be updated like so:
\begin{equation}
  \text{EF}_\text{new} := \max \{1.3, \text{EF}_\text{old}+(0.1-(5-q)(0.08+(5-q)0.02))\},
\end{equation}
where $q$ is the quality of response on a 0 to 5 scale. The interval $I_\text{new}$ until the next repetition is supposed to be
\begin{equation}
  I_\text{new} = I_\text{old} \cdot \text{EF},
\end{equation}
but the specification does not explain whether to use the old or the new value of $\text{EF}$. Which one is it?</p>

<p>The implementations I found readable seem to be wrong in other places, so I'm not very confident that they are a reliable source on this issue.</p>

CC BY-SA 3.0
2017-02-22T13:33:59.957Z
Hi Martin, welcome at CogSci. Could you please provide a short description of super memo 2 in your question, such as what kind of tool it is and what it is used for? This way people will be more likely to understand your question  immediately.
Robin Kramer-ten Have
CC BY-SA 3.0
2017-02-27T06:31:48.980Z
Could you also explain what the E-Factor is?
Seanny123
CC BY-SA 3.0
2017-03-06T09:17:12.770Z
It's explained in the link: Some number that's altered depending on how good a word is remembered. I don't know what the "E" stands for.
Martin Bidlingmaier
CC BY-SA 3.0
2017-09-05T07:28:08.793Z
EF is the "easiness factor". This means that the greater easiness you have, the longer will be the interval to next review (I_new).
Roman Klimenko
<learning>
Specification of SuperMemo 2
Martin Bidlingmaier
# Specification of SuperMemo 2

(Asked by: username_0 on 2017-02-22)

I'm confused about the exact specification of the SuperMemo2 algorithm for spaced repetition learning, as explained [here](https://www.supermemo.com/english/ol/sm2.htm). After each repetition, the E-Factor has to be updated like so:
\begin{equation}
\text{EF}\_\text{new} := \max \{1.3, \text{EF}\_\text{old}+(0.1-(5-q)(0.08+(5-q)0.02))\},
\end{equation}
where $q$ is the quality of response on a 0 to 5 scale. The interval $I\_\text{new}$ until the next repetition is supposed to be
\begin{equation}
I\_\text{new} = I\_\text{old} \cdot \text{EF},
\end{equation}
but the specification does not explain whether to use the old or the new value of $\text{EF}$. Which one is it?

The implementations I found readable seem to be wrong in other places, so I'm not very confident that they are a reliable source on this issue.

**Tags:** learning

> **Comments:**
> **username_1**: Hi Martin, welcome at CogSci. Could you please provide a short description of super memo 2 in your question, such as what kind of tool it is and what it is used for? This way people will be more likely to understand your question  immediately.  
> **username_2**: Could you also explain what the E-Factor is?  
> **username_0**: It's explained in the link: Some number that's altered depending on how good a word is remembered. I don't know what the "E" stands for.  
> **username_3**: EF is the "easiness factor". This means that the greater easiness you have, the longer will be the interval to next review (I_new).  

---

## 1 answers

### Answer by username_3 on 2017-09-05. Score: 2 | Accepted answer

$EF$ is the "easiness factor". This means that the greater easiness you have, the longer will be the interval to next review ($I_\text{new}$).
So if you will use the old $EF$, the new interval value will not take into account your last review quality, which makes less sense IMO.
For the other hand, as I can see in the original implementation of algorithm, they calculate the interval first and then they calculate the easiness:
procedure Repetition(ElementNo,Grade:longint;var NextInterval:longint;commit:WordBool);
  var DataRecord:TDataRecord;
  begin
    DataRecord:=GetDataRecord(ElementNo);

    with DataRecord do
    begin
      if Grade>=3 then
      begin
        if Repetition=0 then
        begin
          Interval:=1;
          Repetition:=1;
        end
        else if Repetition=1 then
        begin
          Interval:=6;
          Repetition:=2;
        end
        else begin
          Interval:=round(Interval*EF);
          Repetition:=Repetition+1;
        end;
      end
      else begin
        Repetition:=0;
        Interval:=1;
      end;

      EF:=EF+(0.1-(5-Grade)*(0.08+(5-Grade)*0.02));

      if EF<1.3 then
        EF:=1.3;
        NextInterval:=Interval;
      end;

      if commit then
        SetDataRecord(ElementNo,DataRecord);
      end;

The same is in the specification: they calculate next interval at step 3 and $EF$ is calculated at step 5.
I'd like to understand what all these magic coefficients mean and how they were found, but unfortunately didn't find this information.


---

