mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 16:57:31 +01:00
[apps/sequence] Make controllers inherit from StorageFunction controllers when required
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <cmath>
|
||||
|
||||
using namespace Poincare;
|
||||
using namespace Shared;
|
||||
|
||||
namespace Sequence {
|
||||
|
||||
@@ -49,22 +50,22 @@ void TemplatedSequenceContext<T>::step(SequenceStore * sequenceStore, SequenceCo
|
||||
}
|
||||
|
||||
/* Evaluate new u(n) and v(n) */
|
||||
Sequence * u = sequenceStore->numberOfModels() > 0 ? sequenceStore->modelAtIndex(0) : nullptr;
|
||||
u = u && u->isDefined() ? u : nullptr;
|
||||
Sequence * v = sequenceStore->numberOfModels() > 1 ? sequenceStore->modelAtIndex(1) : nullptr;
|
||||
v = v && v->isDefined() ? v : nullptr;
|
||||
ExpiringPointer<Sequence> u = sequenceStore->numberOfModels() > 0 ? sequenceStore->modelForRecord(sequenceStore->recordAtIndex(0)) : nullptr;
|
||||
u = u.isNull() && u->isDefined() ? u : nullptr;
|
||||
ExpiringPointer<Sequence> v = sequenceStore->numberOfModels() > 1 ? sequenceStore->modelForRecord(sequenceStore->recordAtIndex(1)) : nullptr;
|
||||
v = v.isNull() && v->isDefined() ? v : nullptr;
|
||||
/* Switch u & v if the name of u is v */
|
||||
if (u != nullptr && u->name()[0] == SequenceStore::k_sequenceNames[1][0]) {
|
||||
Sequence * temp = u;
|
||||
if (!u.isNull() && u->fullName()[0] == SequenceStore::k_sequenceNames[1][0]) {
|
||||
ExpiringPointer<Sequence> temp = u;
|
||||
u = v;
|
||||
v = temp;
|
||||
}
|
||||
|
||||
/* Approximate u & v at the new rank. We evaluate u twice in case its
|
||||
* expression depends on v. */
|
||||
m_values[0][0] = u ? u->approximateToNextRank<T>(m_rank, sqctx) : NAN;
|
||||
m_values[1][0] = v ? v->approximateToNextRank<T>(m_rank, sqctx) : NAN;
|
||||
m_values[0][0] = u ? u->approximateToNextRank<T>(m_rank, sqctx) : NAN;
|
||||
m_values[0][0] = !u.isNull() ? u->approximateToNextRank<T>(m_rank, sqctx) : NAN;
|
||||
m_values[1][0] = !v.isNull() ? v->approximateToNextRank<T>(m_rank, sqctx) : NAN;
|
||||
m_values[0][0] = !u.isNull() ? u->approximateToNextRank<T>(m_rank, sqctx) : NAN;
|
||||
}
|
||||
|
||||
template class TemplatedSequenceContext<float>;
|
||||
|
||||
Reference in New Issue
Block a user