---
name: "sc_RefDiagSCMatrix"
section: "3"
platform: "linux"
package: "libsc-doc"
version: "2.3.1-22"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/sc_RefDiagSCMatrix"
---

# sc\_RefDiagSCMatrix(3)

The RefDiagSCMatrix class is a smart pointer to an DiagSCMatrix specialization.

## NAME

sc::RefDiagSCMatrix - The **RefDiagSCMatrix** class is a smart pointer to an **DiagSCMatrix** specialization.

## SYNOPSIS

`#include <matrix.h>`

Inherits **sc::Ref\< DiagSCMatrix \>**.

### Public Member Functions

**RefDiagSCMatrix** ()\
 Initializes the matrix pointer to 0.  **RefDiagSCMatrix** (const **RefDiagSCMatrix** &m)\
 Make this and m refer to the same **SCMatrix**.  **RefDiagSCMatrix** (**DiagSCMatrix** \*m)\
 Make this refer to m.  **RefDiagSCMatrix** & **operator=** (**DiagSCMatrix** \*m)\
 Make this refer to m.  **RefDiagSCMatrix** & **operator=** (const **RefDiagSCMatrix** &m)\
 Make this and m refer to the same matrix.  **RefDiagSCMatrix** (const **RefSCDimension** &, const **Ref**\< **SCMatrixKit** \> &)\
 Create a diagonal matrix with dimension d by d.  **RefSCMatrix** **operator\*** (const **RefSCMatrix** &) const\
 Multiply this by a matrix and return a matrix.  **RefDiagSCMatrix** **operator\*** (double) const\
 **RefDiagSCMatrix** **operator+** (const **RefDiagSCMatrix** &) const\
 Matrix addition and subtraction.  **RefDiagSCMatrix** **operator-** (const **RefDiagSCMatrix** &) const\
 **RefDiagSCMatrix** **i** () const\
 Return the inverse of this.  **RefDiagSCMatrix** **gi** () const\
 Return the generalized inverse of this.  **RefDiagSCMatrix** **clone** () const\
 These call the **SCMatrix** members of the same name after checking for references to 0.  **RefDiagSCMatrix** **copy** () const\
 void **set\_element** (int, double) const\
 void **accumulate\_element** (int, double) const\
 double **get\_element** (int) const\
 void **randomize** () const\
 void **assign** (const **RefDiagSCMatrix** &) const\
 void **scale** (double) const\
 void **assign** (double) const\
 void **assign** (const double \*) const\
 void **convert** (double \*) const\
 void **accumulate** (const **RefDiagSCMatrix** &) const\
 void **element\_op** (const **Ref**\< **SCElementOp** \> &) const\
 void **element\_op** (const **Ref**\< **SCElementOp2** \> &, const **RefDiagSCMatrix** &) const\
 void **element\_op** (const **Ref**\< **SCElementOp3** \> &, const **RefDiagSCMatrix** &, const **RefDiagSCMatrix** &) const\
 int **n** () const\
 **RefSCDimension** **dim** () const\
 **Ref**\< **SCMatrixKit** \> **kit** () const\
 double **trace** () const\
 void **print** (std::ostream &) const\
 void **print** (const char \*title=0, std::ostream &out=**ExEnv::out0**(), int=10) const\
 void **save** (**StateOut** &)\
 void **restore** (**StateIn** &)\
 Restores the matrix from **StateIn** object. The matrix must have been initialized already.  double **determ** () const\
 Returns the determinant of the referenced matrix.  **DiagSCMatrixdouble** **operator()** (int **i**) const\
 Assign and examine matrix elements.  int **nblock** () const\
 If this matrix is blocked return the number of blocks.  **RefDiagSCMatrix** **block** (int **i**) const\
 If this matrix is blocked return block i.

### Additional Inherited Members

## Detailed Description

The **RefDiagSCMatrix** class is a smart pointer to an **DiagSCMatrix** specialization.

## Constructor & Destructor Documentation

### sc::RefDiagSCMatrix::RefDiagSCMatrix ()

Initializes the matrix pointer to 0. The reference must be initialized before it is used.

### sc::RefDiagSCMatrix::RefDiagSCMatrix (const RefSCDimension &, const Ref\< SCMatrixKit \> &)

Create a diagonal matrix with dimension d by d. The data values are undefined.

## Member Function Documentation

### RefDiagSCMatrix sc::RefDiagSCMatrix::block (int i) const

If this matrix is blocked return block i. Otherwise return this as block 0.

### int sc::RefDiagSCMatrix::nblock () const

If this matrix is blocked return the number of blocks. Otherwise return 1.

## Author

Generated automatically by Doxygen for MPQC from the source code.
