(git:c09f6e5)
Loading...
Searching...
No Matches
dbm_multiply.h
Go to the documentation of this file.
1/*----------------------------------------------------------------------------*/
2/* CP2K: A general program to perform molecular dynamics simulations */
3/* Copyright 2000-2025 CP2K developers group <https://cp2k.org> */
4/* */
5/* SPDX-License-Identifier: BSD-3-Clause */
6/*----------------------------------------------------------------------------*/
7#ifndef DBM_MULTIPLY_H
8#define DBM_MULTIPLY_H
9
10#include "dbm_matrix.h"
11
12#include <stdbool.h>
13#include <stdint.h>
14
15/*******************************************************************************
16 * \brief Performs a multiplication of two dbm_matrix_t matrices,
17 as C := alpha * op( A ) * op( B ) + beta * C.
18
19 The filter_eps parameter is used to filter the resulting matrix.
20 The filtering criterion is whether the block-frobenius norm is less
21 than the specified epsilon. One-the-fly filtering is done such that
22 individual multiplications are skipped if the product of the frobenius
23 norms of the left- and right-matrix blocks are less than the specified
24 epsilon divided by the maximum number of possible multiplies in each
25 row. In addition a final filtering is done as well with the same
26 epsilon value.
27 * \author Ole Schuett
28 ******************************************************************************/
29void dbm_multiply(const bool transa, const bool transb, const double alpha,
30 const dbm_matrix_t *matrix_a, const dbm_matrix_t *matrix_b,
31 const double beta, dbm_matrix_t *matrix_c,
32 const bool retain_sparsity, const double filter_eps,
33 int64_t *flop);
34
35#endif
36
37// EOF
subroutine, public dbm_multiply(transa, transb, alpha, matrix_a, matrix_b, beta, matrix_c, retain_sparsity, filter_eps, flop)
Computes matrix product: matrix_c = alpha * matrix_a * matrix_b + beta * matrix_c.
Definition dbm_api.F:735
Internal struct for storing a matrix.
Definition dbm_matrix.h:19