Inconsistent `arena_matrix`/`varmat` interaction between `=` and `+=`

Ouverte
#3,407 2 commentaires 0 réactions 1 personne assignée Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@SteveBronder y travaille déjà.

Depuis le 22/9/2026.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
À clarifier
Activité
Active
Stack technique
cpp
Domaine
backend

Piste de recherche

Commencez par le reproducer fourni et examinez l’interaction entre arena_tEigen::MatrixXd et var_valueEigen::MatrixXd. Déterminez le comportement d’aliasing attendu pour += par rapport à =, puis définissez un résultat attendu cohérent ainsi que des tests pour les deux opérations.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Opening this one as an issue since I'm not sure what the correct/intentional behaviour should be!

The arena_matrix <-> var_value<Eigen::MatrixXd> interaction currently handles inplace writes differently to assignment.

Where modifying an arena_matrix after creating a var_value will also update the value of the var_value if an inplace write is used, but not if an assignment is used:

#include <stan/math/rev.hpp>
#include <iostream>

int main() {
  Eigen::MatrixXd m = Eigen::MatrixXd::Constant(1, 1, 1);

  stan::arena_t<Eigen::MatrixXd> a(m);
  stan::math::var_value<Eigen::MatrixXd> v(a);  // shares a's memory
  std::cout << v.val() << "\n";

  a += m;  // writes in place, v sees the new values
  std::cout << v.val() << "\n";

  a = a + m;  // rebinds a, v keeps the old memory
  std::cout << v.val() << std::endl;
}

Returns:

$ ./arena 
1
2
2
Langage dominant
C++
Étoiles
845
Forks
225
Merge moyen
4 j 21 h
PR mergées (30 j)
13

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de stan-dev/math

Toutes les issues de stan-dev/math

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.